Django Queryset";。日期(……)”;返回datetime对象的非唯一DateTimeQueryset
对于博客条目的Django Queryset";。日期(……)”;返回datetime对象的非唯一DateTimeQueryset,django,datetime,django-queryset,Django,Datetime,Django Queryset,对于博客条目的QuerySet,我想创建一个发布这些文章的月份的DateQuerySet。查询是: dates = Entry.published.all().dates('pub_date', 'month') “月”返回字段的所有不同年/月值的列表 如果我有4个带日期的条目: (2012年2月3日) (2012年2月2日) (2012年1月24日) (2011年12月28日) 我希望返回3个datetime对象;一个用于12月、1月、2月,我得到了4个返回值,每个原始日期返回一个 这
QuerySet
,我想创建一个发布这些文章的月份的DateQuerySet
。查询是:
dates = Entry.published.all().dates('pub_date', 'month')
“月”返回字段的所有不同年/月值的列表
如果我有4个带日期的条目:
- (2012年2月3日)
- (2012年2月2日)
- (2012年1月24日)
- (2011年12月28日)
distinct()
添加到查询中,但它仍然返回每个日期
更新 解决此问题的一个简单方法是从
日期查询集
创建一个集
:
dates = Entry.published.all().dates('pub_date', 'month')
return set(dates)
这将删除重复的
datetime
对象,但我仍然不明白为什么会发生这种情况(或者如果我误解了dates()的工作原理)您的症状听起来就像是带有顺序的分组查询
您可以打印查询。查询
,查看是否对要添加到选择
的字段应用了排序,从而使所有这些字段都不同
Entry.published.dates('pub_date', 'month').order_by()
datetimes()
而不是dates()
,在datetime类型对象的情况下是一个好主意
我的环境:
- win10+Python 3.6.8
- django2.2.12
供参考:
- 日期时间:
- 日期:
我很好奇,dates=Entry.published.dates('pub_date','month')返回什么?它返回一个DateQuerySet
,它基本上是一个datetime
对象的列表。它会为原始查询集中的每个条目返回一个,而不管是否在同一个月内发生。它是否也会像使用all()调用的版本一样返回重复的日期?是否使用默认管理器?否,但是published
管理器继承了默认设置,只是从futureOops中筛选出条目,忘记了这个问题-我的黑客解决了它。我很快就会查出来