Django:通过相关对象访问外键
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django:通过相关对象访问外键相关的知识,希望对你有一定的参考价值。
假设我有一个模型Profile
,它通过User
与ForeignKey
关系或者OneToOne关系与标准unique=True
模型相关:
class Profile(models.Model):
user = (either a ForeignKey/OneToOne relationship)
...
如果我理解了文档,那么列的数据库表示将是user_id
,来自Django自动添加_id
。此user_id将包含一系列整数。
假设我再次在shell中实例化该模型的对象,并尝试访问user
属性:
a_profile = Profile()
a_profile.user
根据我的阅读,在'ForeignKey'关系的情况下,user
属性现在应该是一个描述符,访问它将调用它的__ get __方法,让我访问相关的模型实例 - 在这种情况下是用户实例。
我的问题:
我注意到我也可以通过用户实例访问Profile实例,并使用OneToOne
关系,通过:
user_profile = User.objects.all()[0]
user_profile.profile
当我做同样的事情,但有一个ForeignKey
关系,我得到一个查询集。
幕后发生了什么? user
属性的Profile
属性是否与OneToOne
关系也是一个描述符,其工作方式与ForeignKey
关系相同?
谢谢!
答案
如果它们之间的关系是一对一,则只能使用Object_X.user:
以上是关于Django:通过相关对象访问外键的主要内容,如果未能解决你的问题,请参考以下文章