2012-11-15 4 views
0

문제 설명 : Django API에서 다음 쿼리를 만듭니다.쿼리 집합 개체의 필드 제외

테이블 : 제품

분야 :

id int primary_key 

class_id int 

class_content CharField 

각 CLASS_ID 여러 클래스의 콘텐츠가 있습니다.

두 개의 서로 다른 클래스 ID의 경우 동일하거나 다른 class_content가 있습니다.

나는 두 CLASS_ID 사이의 차이를 나열 할 : 여기

내가 원시 SQL에서 쿼리를 만드는 방법입니다 :

예 : = 1, CLASS_ID = 2

CLASS_ID의 차이를 발생 검색어 :

SELECT * FROM Product 

WHERE class_id = 1 && class_content NOT IN 

(SELECT class_content FROM Product WHERE class_id = 2); 

이 쿼리는 잘 작동하고 CLASS_ID 1, 2 01 사이의 차이를 제공합니다이 쿼리를 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)