【发布时间】:2015-06-27 01:02:13
【问题描述】:
我正在使用带有 MySQL 后端的 Django (1.8)。我有两个要查询的不相关表。结果是每个表中两列的串联。我想合并结果,对它们进行排序并选择不同的。为了举例,假设我有 tableA 和 tableB 两者都有 first_name 和 last_name 列。每个 cloumn 标题都有对其中表的引用(例如 first_name_A)。目前我正在对每个表运行查询并使用 sorted(chain(queryA, queryB)) 将它们放在一起。当我尝试在模板中的 for 循环中引用结果时,问题就来了。
在代码方面我有这个:
views.py
queryA = tableA.objects.order_by('first_name_A', 'last_name_A').values('first_name_A', 'last_name_A').distinct()
queryB = tableB.objects.order_by('first_name_B', 'last_name_B').values('first_name_B', 'last_name_B').distinct()
query = sorted(chain(queryA, queryB))
return render_to_response('results.html', {'queries': query})
html
<div>
{% for query in queries %}
<tr>
<td>{{ query.first_name_A }} {{ query.last_name_A }}</td>
</tr>
{% endfor %}
</div>
上面的 html 显然只会返回 tableA 中的名字和姓氏。这些已排序且不同,但不包括来自 tableB 的信息。由于每个表中的列具有不同的标题并且除了值(而不是键)之外没有类似的属性,我如何合并它们、排序和选择不同的组合?还是应该只重命名列以删除表引用?
【问题讨论】:
标签: mysql django django-queryset