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

Count number of distinct records by date in Django

关注这个问题: 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对象,我该怎么办?

我试过了:

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

但它似乎不起作用

您的问题是您在 values() 中包含了 id,这使得所有记录都是唯一的,打败了 distinct()。试试这个:

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