【问题标题】:django query a model that has a foreign key, checking a property of that foreign keydjango 查询具有外键的模型,检查该外键的属性
【发布时间】: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") 之类的模型轻松执行查询

但是我还没有看到任何方法来检查该对象的特定属性

【问题讨论】:

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


    【解决方案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。他们真的很有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-30
        • 1970-01-01
        • 2020-12-20
        • 1970-01-01
        • 2021-12-27
        • 2011-02-01
        • 2018-09-01
        相关资源
        最近更新 更多