django一旦获取切片,就无法组合查询

Str*_*est 5 django concatenation django-queryset slice

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

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

>>> query_set_1 | query_set_2
Run Code Online (Sandbox Code Playgroud)

不去工作,

>>> AssertionError: Cannot combine queries once a slice has been taken.
Run Code Online (Sandbox Code Playgroud)

有什么建议?谢谢!

Ign*_*ams 12

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

qiter = itertools.chain(query_set_1, query_set_2)
Run Code Online (Sandbox Code Playgroud)


rud*_*dra 5

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

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

queryset = query_set_1.union(query_set_2)
Run Code Online (Sandbox Code Playgroud)