對於QuerySet
的博客條目,我想創建一個DateQuerySet
這些帖子的月份。查詢是:Queryset「.dates(...)」返回日期時間對象的不明確的DateTimeQueryset
dates = Entry.published.all().dates('pub_date', 'month')
「月」 返回現場所有不同的年/月值的列表。
如果我有4項與日期:
- (2012年02月,第3)
- (2012年02月,第二屆)
- (2012,一月二十四日電)
- (2011年12月28日)
我希望得到3個日期時間對象返回;一個用於Dec
,Jan
,Feb
,而不是我得到4個返回,每個原始日期一個
這是預期的行爲嗎?我試着將distinct()
添加到查詢中,但它仍然返回每個日期。
UPDATE
一個簡單的方法來解決,這是做一個Set
從DateQuerySet
:
dates = Entry.published.all().dates('pub_date', 'month')
return set(dates)
這消除了重複datetime
對象,但我還是不明白爲什麼這個(或者如果我誤解日期()的工作方式)
我很好奇,date = Entry.published.dates('pub_date','month')會返回什麼? – akonsu 2012-02-09 13:06:30
它返回一個'DateQuerySet',它基本上是'datetime'對象的列表。它會爲原始查詢集中的每個條目返回一個,而不管是否在同一個月內發生的不是 – 2012-02-09 13:49:27
它是否也會像使用all()調用的版本一樣返回重複日期? – akonsu 2012-02-09 13:52:08