7

有什么方法可以连接切片查询集?它的简化示例(我意识到这个特定示例可以写在一个查询中):

>>> ...
>>> query_set_1 = Model.objects.filter(...)[:3]
>>> query_set_2 = Model.objects.filter(...)[5:]

>>> query_set_1 | query_set_2

不去上班,

>>> AssertionError: Cannot combine queries once a slice has been taken.

有什么建议么?谢谢!

4

3 回答 3

12

不,但是itertools.chain()将允许您按顺序遍历两个查询集。

qiter = itertools.chain(query_set_1, query_set_2)
于 2012-09-18T23:07:13.877 回答
7

您可以使用union()组合两个切片查询集。像这样:

query_set_1 = Model.objects.filter(...)[:3]
query_set_2 = Model.objects.filter(...)[5:]

queryset = query_set_1.union(query_set_2)
于 2019-02-01T05:24:35.880 回答
0
merged_queryset = [x for x in queryset1] + [y for y in queryset2]
于 2015-09-12T01:38:00.637 回答