2010-09-06 245 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