python - django ORM 中的自定义 SQL : Filtering a list based off another filtered list in one query

标签 python django orm

我想要做的是检索 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(...)

谢谢

最佳答案

这个怎么样:

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 表。

关于python - django ORM 中的自定义 SQL : Filtering a list based off another filtered list in one query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12700100/

相关文章:

python - 使用 Templatetags 使模板中的所有主题标签均可点击

python - 在两个不同的线程中运行 asyncio 以动态处理操作

适用于动态匹配组对象的 Python 正则表达式

python - 数据打印时防止终端字符集切换

sql - 如何为客户特定数据使用通用变量

php - 通过 PersistentCollection 对结果进行排序

ruby-on-rails - Ruby on Rails可重排的有序列表

python - 模板渲染 Django 1.6 期间的 Dijan 错误

python - Django Queryset 和 filter() 与 get()

php - 如何结合 Prestashop (PHP) 和 DjangoCMS (Python)