【问题标题】:Django: foreign key access through related objectsDjango:通过相关对象进行外键访问
【发布时间】:2018-08-14 08:55:24
【问题描述】:

假设我有一个模型 Profile 通过 ForeignKeyunique=True 关系或 OneToOne 关系与标准 User 模型相关:

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 关系时,我得到一个查询集。

幕后发生了什么?具有OneToOne 关系的Profile 实例上的user 属性也是一个描述符,其工作方式与ForeignKey 关系的情况相同吗?

谢谢!

【问题讨论】:

标签: python django foreign-keys models


【解决方案1】:

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

Check this.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 2015-09-10
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 2018-10-05
    相关资源
    最近更新 更多