2012-03-23 43 views
0

我試過這個文檔中的所有例子:(Django)如何使用distinct()函數?

https://docs.djangoproject.com/en/dev/ref/models/querysets/#distinct

但我不能管理,使其工作!

輸出是這個樣子:

In [1]: from restoranya.psmenu.models import * 

In [2]: secenekler = SecenekGruplari.objects.all() 

In [3]: print secenekler 
[<SecenekGruplari: Acı Seçimi>, <SecenekGruplari: Ek Malzemeler>, <SecenekGruplari: Ekstra>, <SecenekGruplari: Çoklu Seçim>, <SecenekGruplari: Ek Malzemeler>, <SecenekGruplari: Deneme>] 

In [4]: secenekler = SecenekGruplari.objects.distinct("isim") 

In [5]: print secenekler 
[<SecenekGruplari: Acı Seçimi>, <SecenekGruplari: Ek Malzemeler>, <SecenekGruplari: Ekstra>, <SecenekGruplari: Çoklu Seçim>, <SecenekGruplari: Ek Malzemeler>, <SecenekGruplari: Deneme>] 

In [6]: secenekler = SecenekGruplari.objects.order_by("isim").distinct("isim") 

In [7]: print secenekler 
[<SecenekGruplari: Acı Seçimi>, <SecenekGruplari: Çoklu Seçim>, <SecenekGruplari: Deneme>, <SecenekGruplari: Ek Malzemeler>, <SecenekGruplari: Ek Malzemeler>, <SecenekGruplari: Ekstra>] 

我應該怎麼辦呢?

回答

3

僅在Django 1.4+中支持將參數傳遞給distinct。如果你的版本較小,那麼你的運氣不好。即便如此,它只支持Postgresql,所以如果你使用其他的東西,比如MySQL。你運氣不好。

+0

哦SH *使用1.3 :(牛逼IM有另一種方式做到這一點在Django 1.3 – 2012-03-23 15:17:15

+0

'raw'你?可以做任何你想要與 – 2012-03-23 16:19:38

0

什麼

secenekler = SecenekGruplari.objects.values("isim").distinct() 

0

克里斯是正確的,但想補充一點:

如果使用.distinct('isim'),這意味着您要選擇的都是從數據庫中該AREN領域的領域,但值」你的獨特條款中的t將是不可預測的。每次你可能會得到不同的結果。

如果您不在意,因爲您無意使用其他字段,那麼最好不要從數據庫中獲取它們。然後你就可以使用正常的不同條款:

queryset = SecenekGruplari.objects.only("isim").distinct() 

或者:

isim_values = SecenekGruplari.objects.values_list("isim", flat=True).distinct() 
+0

我的查詢需要是這個樣子: 查詢集= SecenekGruplari.objects.filter(isim__icontains = request.GET中[「術語」]) 是有可能使用不同的()中這樣的查詢? – 2012-03-23 16:13:10

+0

queryset = SecenekGruplari.objects.filter(isim__icont ains = request.GET [「term」])。distinct() – craigds 2012-03-23 21:09:24