【发布时间】:2018-07-22 11:38:27
【问题描述】:
我创建了一个 Django QuerySet 来计算值,但不幸的是它没有显示 0 值。因此,我想合并我的两个列表,例如 SQL 中的左连接。我展示了我的输入和期望的输出。
输入 1(Django 查询 1):
我这样打印出来:
for i in query_1:
print (i['day'], i['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(Django 查询 2):
我这样打印出来:
for i in query_2:
print (i['day'], i['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
我想要的输出是:
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
我试过了,但失败了:
for a, b in zip (query_1, query_2)
if a['day'] == b['day']:
print (a['count_2']) #It prints only the result of query_2 not both :(
else:
print ('0')
【问题讨论】:
-
失败在哪方面?发生了什么?
-
对不起,我编辑了我的错字。它只打印 4 个值 (2,6,2,4),不打印零。
-
"我创建了一个 Django QuerySet 来计算值,但不幸的是它没有显示 0 值。因此我想合并我的两个列表,比如 SQL 中的左连接" => 也许你应该解决这个问题通过发出您想要的确切查询来代替来源? docs.djangoproject.com/en/2.0/topics/db/sql
-
重复压缩两个列表,直到用完较短的列表。
-
@brunodesthuilliers 我知道原始 sql 方法,但我只想使用内置的可能性。
标签: python list count left-join django-queryset