【发布时间】:2018-02-12 14:02:24
【问题描述】:
我正在尝试在 Django 中加入两个查询。有没有办法做到这一点?我试图在python 中合并结果,但我意识到我必须在模板中多次编辑结果,这样我才能更舒服地使用左连接我的查询。如果我知道这个方法,那么在我未来的工作中也会非常有用。提前感谢您的帮助。
我的第一个查询 (1) 和结果是:
查询(1)
query:1=Table.objects.all()
.filter(time_stamp__range=(before_now_week, now)).
.filter(field__gt=0.01)
.filter(field__lte=0.03)
.annotate(day=TruncDay('time_stamp'))
.values('day')
.annotate(time=Count('time_stamp'))
.annotate(field_count_1=Count('field'))
.values('day','field_count_1')
.order_by('-day')
结果(1):
day field_count_1
-------------------------|-----------
2018-01-17 00:00:00+01:00| 49
2018-01-16 00:00:00+01:00| 139
2018-01-15 00:00:00+01:00| 144
2018-01-14 00:00:00+01:00| 142
2018-01-13 00:00:00+01:00| 141
2018-01-12 00:00:00+01:00| 144
2018-01-11 00:00:00+01:00| 145
2018-01-10 00:00:00+01:00| 95
我的第一个查询 (2) 和结果是:
查询(2)
query=Table.objects.all()
.filter(time_stamp__range=(before_now_week, now)).
.filter(field__gte=0.03)
.annotate(day=TruncDay('time_stamp'))
.values('day')
.annotate(time=Count('time_stamp'))
.annotate(field_count_2=Count('field'))
.values('day','field_count_2')
.order_by('-day')
结果(2)
day field_count_2
-------------------------|-----------
2018-01-17 00:00:00+01:00| 2
2018-01-16 00:00:00+01:00| 6
2018-01-14 00:00:00+01:00| 2
2018-01-13 00:00:00+01:00| 4
期望的结果:
day field_count_1 field_count_2
-------------------------|---------------|--------
2018-01-17 00:00:00+01:00| 49 | 2
2018-01-16 00:00:00+01:00| 139 | 6
2018-01-15 00:00:00+01:00| 144 | 0
2018-01-14 00:00:00+01:00| 142 | 2
2018-01-13 00:00:00+01:00| 141 | 4
2018-01-12 00:00:00+01:00| 144 | 0
2018-01-11 00:00:00+01:00| 145 | 0
2018-01-10 00:00:00+01:00| 95 | 0
【问题讨论】:
-
你需要做的计数来自另一个模型?它叫什么名字?
标签: django left-join django-queryset