2012-11-15 87 views
0

問題陳述:在Django API中進行以下查詢。排除查詢集對象的字段

表:產品

領域:

id int primary_key 

class_id int 

class_content CharField 

每個具有類標識碼多個類的內容。

對於兩個不同的類ID,有相同的以及不同的class_content。

我想列出兩位標識碼(class_id)之間的區別:

這裏是我可以用原始SQL創建查詢:

例如:產生= 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中得出相同的結果。

回答

1

這應該工作:

Product.objects.filter(class_id=1).exclude(class_content__in=Product.objects.filter(class_id=2).values_list('class_content', flat=True)) 
1
lista = Product.objects.values('class_content').filter(class_id=2) 
Product.objects.filter(class_id = 1).exclude(class_content__in=lista) 
相關問題