django 查询具有外键的模型,检查该外键的属性
Posted
技术标签:
【中文标题】django 查询具有外键的模型,检查该外键的属性【英文标题】:django query a model that has a foreign key, checking a property of that foreign key 【发布时间】:2020-11-15 11:53:22 【问题描述】:假设我有两个模型, 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")
之类的模型轻松执行查询
但是我还没有看到任何方法来检查该对象的特定属性
【问题讨论】:
【参考方案1】:您可以“看穿”带有双下划线 (__
) 的关系,因此您可以使用以下内容进行过滤:
model_0.objects.filter(<b>foreign_key__random_property='Something'</b>)
这将使查询看起来像:
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'
【讨论】:
【参考方案2】:在你的情况下它是由双下划线完成的,它看起来像这样model_0.objects.filter(model_1__random_property="Something")
尝试阅读 Django 文档here。他们真的很有帮助。
【讨论】:
以上是关于django 查询具有外键的模型,检查该外键的属性的主要内容,如果未能解决你的问题,请参考以下文章