【问题标题】:Custom SQL in the django ORM: Filtering a list based off another filtered list in one querydjango ORM 中的自定义 SQL:根据一个查询中的另一个过滤列表过滤列表
【发布时间】:2012-10-02 23:55:35
【问题描述】:

我想要做的是检索 CarModel 对象的过滤列表,其中 carfield 位于另一个模型的字段列表中,例如 GasModel。但是也必须过滤掉一组 GasModel,到一个列表中,其中 GasModel 中的一个字段必须等于 CarModel 中的另一个字段(不同的字段)。

我非常想过滤一个列表,以便该列表的一个字段包含在不同模型的字段的单独列表中,并且该列表(第二个模型)也被过滤(但由不同的字段第一个(汽车)模型)。我希望这一切都在一个查询集调用中。

这是我目前所拥有的,我相信的错误是

WHERE anothergasfield = another_field_from_car_carmodel

我是否缺少 FROM 关键字或其他内容?如果是这样,它应该去哪里?

CarModel.objects.extra(where = ['carfield IN (SELECT gasfield FROM\
    gas_gasmodel WHERE anothergasfield = another_field_from_car_carmodel)'])
      .order_by(...)

谢谢

【问题讨论】:

    标签: python django orm


    【解决方案1】:

    这个怎么样:

    CarModel.objects.extra(where = ['carfield IN (SELECT gasfield FROM\
        gas_gasmodel WHERE anothergasfield = carmodel.another_field_from_car_carmodel)'])
          .order_by(...)
    

    只需将carmodel 替换为CarModel 的表名即可。通常是{{ app_name }}_{{ model_name }}

    您在其中嵌套了select 语句,其中的字段来自gas_gasmodel 表,而不是来自carmodel 表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多