我有一个类似于以下的模型:
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)
并在视图中解析结果,但这对我来说似乎不对.
我一直试图将表的结果分组为使用的每小时格式DateTimeField.
SELECT strftime('%H', created_on), count(*)
FROM users_test
GROUP BY strftime('%H', created_on);
Run Code Online (Sandbox Code Playgroud)
此查询工作正常,但相应的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",我猜这会产生错误的结果.
如果有人能解释我并提供解决方案,那将是很棒的.
提前致谢