我有一个类似
的模块class Entry(models.Model):
user = models.ForeignKey(User)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(default=datetime.datetime.now())
#
# date for the post
date = models.DateField()
date
存储帖子的显示日期。我想得到的是用户所有帖子的所有月份和年份的列表。所以它看起来像
7/2015
8/2015
10/2015
我试过这个
Entry.objects.filter(user=self.user) \
.order_by('-date') \
.dates('date', 'year') \
.distinct()
这给了我独特的年份..无论如何在查询中这样做我不必选择唯一的月份并迭代它们来创建一个对象。
我的原始sql看起来像
SELECT DISTINCT YEAR(date) AS y, MONTH(date) AS m FROM entries WHERE userid ='". $this->id ."' ORDER BY date DESC
答案 0 :(得分:2)
如果我正确理解您的问题,我认为您只需要使用month
作为QuerySet.dates函数的第二个参数。例如,
self.user.entry_set.order_by('-date').dates('date', 'month')
会返回所有self.user
Entry
的不同年/月值列表。
然后,您可以根据需要格式化每个日期时间对象。