假设我的模型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 __方法,让我可以访问相关的模型实例 - 在本例中是User实例。
我的问题:
我注意到我也可以通过User实例访问Profile实例,并且OneToOne
关系通过:
user_profile = User.objects.all()[0]
user_profile.profile
当我做同样的事情但有ForeignKey
关系时,我会得到一个查询集。
幕后发生了什么?并且user
实例上的Profile
属性与OneToOne
关系也是一个描述符,其工作方式与ForeignKey
关系相同吗?
谢谢!