一尘不染

Django在/不在查询中

django

我试图弄清楚如何在Django中编写“不在”风格的查询。例如,我正在考虑的查询结构将如下所示。

select table1.* 
from table1
where table1.id not in 
(
  select table2.key_to_table1
  from table2 
  where table2.id = some_parm 
)

假设模型名为table1和table2,django语法会是什么样?


阅读 485

收藏
2020-03-31

共1个答案

一尘不染

table1.objects.exclude(id__in=
    table2.objects.filter(your_condition).values_list('id', flat=True))

排除功能的作用类似于Not你要查询的运算符。该属性flat = True告诉table2查询以返回value_list一级列表。因此,…最后,你IDs将从table2中获得列表,你将用该列表定义用户中的条件table1,该条件将被exclude函数拒绝。

2020-03-31