django查询具有外键的模型,检查该外键的属性

时间:2020-07-25 20:57:17

标签: django django-models foreign-keys many-to-many django-queryset

假设我有两个模型, model_0 model_1

model_0 的定义如下

def model_0:
    ...
    foreign_key = models.ForeignKey(model_1)
    ...

model_1

def model_1:
    ...
    random_property = models.Charfield()
    ...

model_1 model_0

中的外键(可以是许多键)

如何在 model_1 对象中执行查询,以检查 model_0

的属性

类似model_0.objects.filter(model_0.random_property="Something")

我知道您可以使用model_0.objectsl.filter(model_0="Instance of model 0")

这样的模型轻松执行查询,但是我还没有找到任何方法来检查该对象的特定属性

2 个答案:

答案 0 :(得分:1)

您通过双下划线(__)来“浏览”一个关系,因此可以使用:

model_0.objects.filter(foreign_key__random_property='Something')

这将使查询如下:

SELECT model_0.*
FROM model_0
LEFT OUTER JOIN model_1 ON model_1.id = model_0.foreign_key_id
WHERE model_1.random_property = 'Something'

答案 1 :(得分:1)

在您的情况下,通过双下划线完成,看起来像这样model_0.objects.filter(model_1__random_property="Something") 尝试阅读Django文档here。他们真的很有帮助。