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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django:通过相关对象访问外键相关的知识,希望对你有一定的参考价值。

假设我有一个模型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 __方法,让我访问相关的模型实例 - 在这种情况下是用户实例。

我的问题:

我注意到我也可以通过用户实例访问Profile实例,并使用OneToOne关系,通过:

user_profile = User.objects.all()[0]
user_profile.profile

当我做同样的事情,但有一个ForeignKey关系,我得到一个查询集。

幕后发生了什么? user属性的Profile属性是否与OneToOne关系也是一个描述符,其工作方式与ForeignKey关系相同?

谢谢!

答案

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

Check this.

以上是关于Django:通过相关对象访问外键的主要内容,如果未能解决你的问题,请参考以下文章

通过django模板中的外键关系快速访问模型属性

Django 访问值对象中的反向外键数据

如何从 Django 模板中的外键访问值

Django - 过滤相关对象

模板中的 Django 外键

Django外键:获取相关模型?