我试图弄清楚如何在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语法会是什么样?
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函数拒绝。
Not
flat = True
table2
table1