如何从QuerySet列表中连接QuerySet

时间:2017-07-07 19:23:51

标签: django django-queryset

我在stackoverflow上遇到过这种语法

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

我需要将一堆QuerySets连接起来:

    prjExpList = list(chain(lvl for lvl in prjlvl))
    prjEnvList = list(chain(env for env in prjEnv))

这给了我一个错误

AttributeError: 'QuerySet' object has no attribute '_meta'

我的目标是连接存储在列表prjlvlprjEnv中的一堆QuerySet 我该怎么做?

2 个答案:

答案 0 :(得分:2)

QuerySets是同一型号吗?你可以做到

combined_queryset = queryset_1 | queryset_2 | queryset_3

将它们链接在一起成为一个QuerySet。这意味着您仍然可以使用ORM中的QuerySet执行操作,这是一个很大的帮助。

答案 1 :(得分:-1)

尝试:

prjExpList = list(chain.from_iterable(prjlvl))

请注意itertools.chain()需要*args个可迭代列表,并且您可以从chain.from_iterable()类方法获得相同的解包行为。

请参阅:https://docs.python.org/2/library/itertools.html#itertools.chain