我有以下模型
from django.contrib.auth.models import User
User = settings.AUTH_USER_MODEL
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
class Tutor(UserProfile):
# tutor_fields here如何从用户对象访问导师?是和user.profile一起的吗?
user.profile.select_related('tutor')似乎不起作用。
发布于 2017-03-09 08:29:58
OneToOneField的工作方式类似于ForeignKey ( unique=True除外),您不需要指定related_name (您可以指定是否要更改它)。
就你而言,例如:
from django.contrib.auth.models import User
User = settings.AUTH_USER_MODEL
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
class Tutor(UserProfile):
user = models.ForeignKey(UserProfile, on_delete=models.CASCADE, related_name='tutor')
details = models.CharField(max_length=100)注:如果您想要/需要一个Tutor用于多个UserProfile,则使用一个Tutor;如果您想要一个(只有一个)Tutor,则为一个UserProfile使用它。
您还可以通过Tutor bu UserProfile访问UserProfile.tutor.details。
发布于 2017-03-09 06:07:20
正如所描述的在django文档中,您应该能够使用user.user_profile访问它。
https://stackoverflow.com/questions/42686942
复制相似问题