2012-02-09 56 views
0

對於QuerySet的博客條目,我想創建一個DateQuerySet這些帖子的月份。查詢是:Queryset「.dates(...)」返回日期時間對象的不明確的DateTimeQueryset

dates = Entry.published.all().dates('pub_date', 'month') 

According to the docs

「月」 返回現場所有不同的年/月值的列表。

如果我有4項與日期:

  • (2012年02月,第3)
  • (2012年02月,第二屆)
  • (2012,一月二十四日電)
  • (2011年12月28日)

我希望得到3個日期時間對象返回;一個用於Dec,Jan,Feb,而不是我得到4個返回,每個原始日期一個

這是預期的行爲嗎?我試着將distinct()添加到查詢中,但它仍然返回每個日期。


UPDATE

一個簡單的方法來解決,這是做一個SetDateQuerySet

dates = Entry.published.all().dates('pub_date', 'month') 
return set(dates) 

這消除了重複datetime對象,但我還是不明白爲什麼這個(或者如果我誤解日期()的工作方式)

+0

我很好奇,date = Entry.published.dates('pub_date','month')會返回什麼? – akonsu 2012-02-09 13:06:30

+0

它返回一個'DateQuerySet',它基本上是'datetime'對象的列表。它會爲原始查詢集中的每個條目返回一個,而不管是否在同一個月內發生的不是 – 2012-02-09 13:49:27

+0

它是否也會像使用all()調用的版本一樣返回重複日期? – akonsu 2012-02-09 13:52:08

回答

1

Y我們的症狀聽起來完全像一個GROUP BY查詢與訂購。

您可以print query.query查看是否有排序應用於將添加到SELECT的字段,從而使所有這些都有區別。

​​
+0

哎呀,忘了這個問題 - 我的破解修復了它。我會很快檢查這一點 – 2012-02-13 19:39:55

相關問題