在 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'))
关注这个问题: 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'))