【问题标题】:Count number of distinct records by date in Django在Django中按日期计算不同记录的数量
【发布时间】:2015-03-20 01:54:51
【问题描述】:

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

但它似乎不起作用

【问题讨论】:

    标签: django django-queryset


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      • 1970-01-01
      • 1970-01-01
      • 2016-05-18
      • 2017-04-30
      相关资源
      最近更新 更多