在Django中使用DISTINCT

2021-07-14 19:12:42 字數 1624 閱讀 2838

有時候想用distinct去掉queryset中的重複項,看django文章中是這麼說的

>>> author.objects.distinct()

[...]

>>> entry.objects.order_by('pub_date').distinct('pub_date')

[...]

>>> entry.objects.order_by('blog').distinct('blog')

[...]

>>> entry.objects.order_by('author', 'pub_date').distinct('author', 'pub_date')

[...]

>>> entry.objects.order_by('blog__name', 'mod_date').distinct('blog__name', 'mod_date')

[...]

>>> entry.objects.order_by('author', 'pub_date').distinct('author')

[...]

note

django文件中特別介紹了,distinct的列一定要先order_by並且在第一項。

when you specify field names, you must provide anorder_by()in thequeryset, and the fields inorder_by()must start with the fields indistinct(), in the same order.

for example,select

distinct

on(a)gives you the first row for each value in columna. if you don』t specify an order, you』ll get some arbitrary row.

完全照做,用的mysql資料庫最後出現了這樣的警告:

raise notimplementederror('distinct on fields is not supported by this database backend')

notimplementederror: distinct on fields is not supported by this database backend

告訴我資料庫不支援。

當然可以這樣:

items = 

for item in query_set:

if item not in items:

如果想用distinct的話,在distinct前面加上values或values_list

u.comment_set.values("forum").distinct()

[, ]

u.comment_set.values_list("forum", flat=true).distinct()

[1l, 2l]

其實就相當於values_list獲得了乙個陣列然後set()

在django中使用logging

django中似乎沒有專門支援logging的module。想在自己開發程式中使用一下log功能,記錄訪問情況,和輸入debug的一些資訊。於是google到一段 使用的python的標準庫logging,目前工作還算正常.url import logging import threading fr...

在Django中使用group by

在django中怎樣使用group by語句呢?找了很多資料,都沒有看到好的,在這裡分享兩種方法給大家 首先,我們先建乙個簡單的模型。class book models.model name models.charfield u 書名 max length 255,db index true aut...

在Django中使用mysql

在django中使用mongodb 1 可以選擇虛擬環境,進入開發環境的虛擬空間,不知道的請看傳送門 2 基本包的版本 django 1.11.8 mongoengine 0.15.0 3 安裝包 pip install mysqlclient4 建立乙個新的django專案,並指定到虛擬空間的py...