簡體   English   中英

(Django)如何使用distinct()函數?

[英](Django) How to use distinct() function?

我已經嘗試了本文檔中的所有示例:

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>]

我應該怎么做?

僅在Django 1.4+中支持將參數傳遞給distinct 如果您使用的是次要版本,則表示您不走運。 即使那樣,Postgresql也只支持它,因此,如果您使用的是MySQL之類的東西。 你真倒霉

關於什么

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

克里斯是對的, 我要補充一點:

如果使用.distinct('isim') ,則意味着您正在從數據庫中選擇所有字段,但是不包含在您的distinct子句中的字段的值將是不可預測的。 每次您可能會得到不同的結果。

如果您不在乎,因為您無論如何都不打算使用其他字段,那么最好不要從數據庫中獲取它們。 然后,您可以使用普通的distinct子句:

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

要么:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM