在Django中按日期计算不同记录的数量

时间:2015-01-21 13:59:22

标签: django django-queryset

关注这个问题: Count number of records by date in Django

class Review(models.Model):
    venue = models.ForeignKey(Venue, db_index=True)
    review = models.TextField()  
    datetime_visited = models.DateTimeField(default=datetime.now)

确实,以下行解决了按日期计算记录数的问题:

Review.objects.filter
    .extra({'date_visited' : "date(datetime_visisted)"})
    .values('date_visited')
    .annotate(visited_count=Count('id'))

但是,我想要有一个明确的计数,也就是说,我想避免在同一天使用相同的ID查看对象,我该怎么办?

我试过了:

Review.objects.filter.
    .extra({'date_visited': "date(datetime_visited)"})
    .values('date_visited', 'id')
    .distinct()
    .annotate(Count('id'))

但似乎无法正常工作

1 个答案:

答案 0 :(得分:0)

你的问题是你在你的值()中包含了id,这使得所有记录都是唯一的,从而击败了distinct()。试试这个:

Review.objects.filter.
    .extra({'date_visited': "date(datetime_visited)"})
    .values('date_visited')
    .distinct()
    .annotate(Count('date_visited'))