首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django模型:父模型访问子模型字段

Django模型:父模型访问子模型字段
EN

Stack Overflow用户
提问于 2017-03-09 04:44:57
回答 2查看 1.4K关注 0票数 1

我有以下模型

代码语言:javascript
复制
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')似乎不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-09 08:29:58

OneToOneField的工作方式类似于ForeignKey ( unique=True除外),您不需要指定related_name (您可以指定是否要更改它)。

就你而言,例如:

代码语言:javascript
复制
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

票数 1
EN

Stack Overflow用户

发布于 2017-03-09 06:07:20

正如所描述的在django文档中,您应该能够使用user.user_profile访问它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42686942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档