Django:通过相关对象访问外键

时间:2018-03-06 13:20:59

标签: python django foreign-keys models

假设我的模型Profile通过UserForeignKey关系或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关系相同吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果它们之间的关系是一对一,则只能使用Object_X.user:

Check this.