如何将Django中的多个查询结果合并在一起



方法一使用Python itertools 模块中的chain方法

from itertools import chain
result_list = list(chain(page_list, article_list, post_list))

如果需要根据某个字段进行排序使用使用sorted函数:

result_list = sorted(
    chain(page_list, article_list, post_list),
    key=lambda instance: instance.date_created)

方法二使用并集运算 |

matches = pages | articles | posts

方法三使用QuerySetunion方法

>>> qs1 = Author.objects.values_list('name')
>>> qs2 = Entry.objects.values_list('headline')
>>> qs1.union(qs2).order_by('name')