【发布时间】:2018-03-08 20:54:56
【问题描述】:
我有一个包含人数和时间戳的数据,我想以小时格式汇总显示。人数对象的模型如下所示:
class PeopleCount(models.Model):
"""
A webapp model classs to store People Count Details.
"""
timestamp = models.DateTimeField(auto_now=True)
people_count_entry = models.IntegerField(blank=True, null=True)
people_count_exit = models.IntegerField(blank=True, null=True)
store = models.ForeignKey(Store, blank=True, null=True)
profile = models.ForeignKey(Profile)
camera = models.ForeignKey(Camera)
recorded_time = models.DateTimeField(null=True, blank=True)
def str(self):
return "People Count {}".format(self.timestamp)
class Meta:
verbose_name = "People Count"
verbose_name_plural = "People Count"
ordering = ['-timestamp']
我正在使用以下查询按小时获取数据:
queryset = PeopleCount.objects.filter(
**json.loads(
self.request.query_params['filter'])['object_params']
).annotate(
time_series=TruncHour('recorded_time')).values(
'time_series').annotate(
people_count_entry=Sum('people_count_entry')).values(
'time_series',
'people_count_entry').annotate(
people_count_exit=Sum('people_count_exit')).values(
'time_series', 'people_count_entry',
'people_count_exit')
上述查询的问题在于它实际上并没有按小时聚合,而是为每个时间戳保留单独的值 我必须在客户端进行操作。 客户端的方法有效,但较大的查询集需要大量时间。 希望我的问题陈述清楚。 谢谢。
【问题讨论】:
标签: django django-models orm django-orm