2012-06-29 4 views
0

나는이 같은 쿼리가 :Django에서 필터 된 쿼리에 distinct()를 사용하는 방법은 무엇입니까?

last_orders = PsSiparis.objects.filter(kullanici = request.user).order_by("-id")[:4] 
for order in last_orders: 
    print order.restoran 

을 그리고 출력 :

Bafra Pide 
Bafra Pide 
Deneme Restoran 
Bafra Pide 

내가 별개의 사용하고자하는() 내 목록은 다음과 같이됩니다 그래서 속성 :

Bafra Pide 
Deneme Restoran 

그러나 나는 그 길을 찾을 수 없었다. 어떤 도움을 주시면 감사하겠습니다.

답변

3

당신은 중복을 제거하는 set 사용해야합니다 :

>>> l = ['Bafra Pide','Bafra Pide','Deneme Restoran','Bafra Pide'] 
>>> s = set(l) 
>>> for i in s: 
... print i 
... 
Bafra Pide 
Deneme Restoran 

당신은 실제 객체를 목록에 개별 이름을 추가하지 않아야합니다.

+0

그래, 고마워 남자 설정() 솔루션입니다 :) –

1

적절한 SQL 쿼리를 생성 할 수있는 간단한 방법이 없으므로 슬라이스 된 쿼리에서 .distinct()을 호출 할 수 없습니다. set 등을 사용하여 후행 작업을 수행해야합니다.

0

Django에는 동일한 검색어 결과를 선택하는 방법이 있습니다. 보기 : Django documentation, distinct()

버전 : 또한 Queryset을 제한하면 Queryset이 ​​반환되므로 문제가 없으므로 distinc() 메소드를 적용한 후 슬라이스하는 것이 좋습니다. Limiting a Queryset

+0

distinct()는 .filter()와 함께 작동하지 않으므로 OP의 질문 (비록 매우 명확하게 말하지 않았지만). – shacker

관련 문제