相关疑难解决方法(0)

在Django中按日期计算记录数

我有一个类似于以下的模型:

class Review(models.Model):
    venue = models.ForeignKey(Venue, db_index=True)
    review = models.TextField()  
    datetime_created = models.DateTimeField(default=datetime.now)
Run Code Online (Sandbox Code Playgroud)

我想查询数据库以获得按天分组的场地的评论总数.MySQL查询将是:

SELECT DATE(datetime_created), count(id) 
FROM REVIEW 
WHERE venue_id = 2
GROUP BY DATE(datetime_created);
Run Code Online (Sandbox Code Playgroud)

在Django中实现这一目标的最佳方法是什么?我可以用

Review.objects.filter(venue__pk=2)
Run Code Online (Sandbox Code Playgroud)

并在视图中解析结果,但这对我来说似乎不对.

python django django-models django-queryset django-1.1

48
推荐指数
4
解决办法
2万
查看次数

使用Django每小时对行进行分组

我一直试图将表的结果分组为使用的每小时格式DateTimeField.

SQL:

SELECT strftime('%H', created_on), count(*)
FROM users_test
GROUP BY strftime('%H', created_on);
Run Code Online (Sandbox Code Playgroud)

此查询工作正常,但相应的Django查询没有.

Django查询我试过:

Test.objects.extra({'hour': 'strftime("%%H", created_on)'}).values('hour').annotate(count=Count('id'))
# SELECT (strftime("%H", created_on)) AS "hour", COUNT("users_test"."id") AS "count" FROM "users_test" GROUP BY (strftime("%H", created_on)), "users_test"."created_on" ORDER BY "users_test"."created_on" DESC
Run Code Online (Sandbox Code Playgroud)

它通过"users_test"添加了额外的组."created_on",我猜这会产生错误的结果.

如果有人能解释我并提供解决方案,那将是很棒的.

环境:

  • Python 3
  • Django 1.8.1

提前致谢

引用(可能重复)(但没有帮助):

django postgresql django-1.8

2
推荐指数
1
解决办法
1195
查看次数