我有几个必须有效组合的查询集。所有查询集都有公共字段key
,我希望通过其值查询结果进行连接。 E.g:
some_query = SomeObject.objects.values('key').annotate(sum_0=Sum('some_value_field'))
other_query = OtherObject.objects.values('key', 'other_field').annotate(sum_1=Sum('some_other_value_field'))
我有什么:
[{'key': 1, 'sum_0': 10}, {'key': 2, 'sum_0': 20}, ...]
[{'key': 1, 'sum_1': 1000}, {'key': 2, 'sum_1': 200}, ...]
我想要的是什么:
[{'key': 1, 'sum_0': 10, 'sum_1': 100}, {'key': 2, 'sum_0': 20, 'sum_1': 200}, ...]
我正在使用这种方法来组合dicts:
d = defaultdict(dict)
for item in [some_query, other_query]:
for elem in item:
d[elem['key']].update(elem)
combined = d.values()
通过遍历每个查询集,是否有更有效的方法来实现除字典合并之外的其他方法,或者有可能通过key
将这些查询集合并到查询本身的一个结果中?
答案 0 :(得分:0)
您可以组合注释以仅执行一次数据库操作:
gsm.mygdx.androidStuff.startActivity()
答案 1 :(得分:0)
itertools.chain是我的首选方式,但注释可以正常工作。