2012-06-29 32 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