【发布时间】:2020-08-31 06:50:22
【问题描述】:
我有两个查询集(实际上是字典列表),例如:
q1 = M1.objects.filter(id=pk).values('p_id', 'q1_quantity')
# q1: <Queryset[{'p_id': 2, 'q1_quantity': 4}, {'p_id': 3, 'q1_quantity': 5}]>
q2 = M2.objects.filter(p_id__in=[q1[x]['p_id'] for x in range(len(q1))]).values('p_id', 'q2_quantity')
# q2: <Queryset[{'p_id': 2, 'q2_quantity': 2}, {'p_id': 2, 'q2_quantity': 5}, {'p_id': 3, 'q2_quantity': 1}, {'p_id': 3, 'q2_quantity': 7}]>
q1 有不同的键值对,而 q2 有重复的键。
1) 我想用公共 p_id 将 q2 的所有值相加,使得 q2 变为:
# q2: <Queryset[{'p_id': 2, 'q2_quantity': 7}, {'p_id': 3, 'q2_quantity': 8}]>
2) 然后,根据共同的 p_id 将 q1 和 q2 合并为 q3,如:
q3 = ?
# q3: <Queryset[{'p_id': 2, 'q1_quantity': 4, 'q2_quantity': 7}, {'p_id': 3, 'q1_quantity': 5, 'q2_quantity': 8}]>
我已经调查过union()。但不知道如何对查询集 (q2) 求和,然后将其与 q1 合并。
有人可以帮帮我吗?
【问题讨论】:
标签: django python-3.x orm django-orm