2010-09-06 297 views
2

我有一個日期時間字段的模型,我想顯示當天查看次數最多的條目。django在日期時間的日期排序/從日期時間提取日期

我想我可能會嘗試類似dt_published__date從日期時間字段中提取日期,但顯然它沒有工作。

popular = Entry.objects.filter(type='A', is_public=True).order_by('-dt_published__date', '-views', '-dt_written', 'headline')[0:5] 

我該怎麼做?

回答

7

AFAIK __date語法不被Django支持。有一個ticket爲此打開。

如果你的數據庫有一個函數來提取日期部分,那麼你可以這樣做:

popular = Entry.objects.filter(**conditions).extra(select = 
    {'custom_dt': 'to_date(dt_published)'}).order_by('-custom_dt') 
+1

日期(dt_published)不爲MySQL,感謝 – demux 2010-09-06 17:38:00

+0

的伎倆,但不會在減緩我的查詢? – demux 2010-09-06 18:19:42

+1

對於PostgresSQL:popular = Entry.objects.filter(** conditions).extra(select = {'custom_dt':'date_trunc('day',dt_published)「},order_by = [' - custom_dt','-views' ,'-dt_written','標題'])[0:5]。 http://www.postgresql.org/docs/8.0/static/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC – 2015-02-22 10:39:39