排除查询集对象的字段

时间:2012-11-15 13:47:24

标签: django list

问题陈述:在Django API中进行以下查询。

表:产品

字段:

id  int   primary_key

class_id   int

class_content    CharField

每个class_id都有多个类内容。

对于两个不同的类id,有相同的以及不同的class_content。

我想列出两个class_id之间的区别:

以下是我在原始SQL中创建查询的方法:

例如:在class_id = 1和class_id = 2

之间产生差异

查询:

SELECT * FROM Product 

WHERE class_id = 1 && class_content NOT IN

(SELECT class_content FROM Product WHERE class_id = 2);

此查询工作正常,并给出class_id 1和2之间的区别。 我希望这个查询在django中执行,我无法从django API中得到相同的结果。

2 个答案:

答案 0 :(得分:1)

这应该有效:

Product.objects.filter(class_id=1).exclude(class_content__in=Product.objects.filter(class_id=2).values_list('class_content', flat=True))

答案 1 :(得分:1)

lista = Product.objects.values('class_content').filter(class_id=2)
Product.objects.filter(class_id = 1).exclude(class_content__in=lista)