我在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'
我的目标是连接存储在列表prjlvl
和prjEnv
中的一堆QuerySet
我该怎么做?
答案 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