Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何组合(合并)多个查询集?_Python_Django_Python 3.x_Django 1.10 - Fatal编程技术网

Python 如何组合(合并)多个查询集?

Python 如何组合(合并)多个查询集?,python,django,python-3.x,django-1.10,Python,Django,Python 3.x,Django 1.10,有人能说出如何组合(合并)多个查询集吗。查询集的数量不是固定的。我尝试了下一个代码,但它并没有像我预期的那样工作。如何解决这个问题 first_list = [] for id in ids: products = Product.objects.filter(company=id) first_list.append(products) final_list = list(chain(first_list)) 此代码返回: [<QuerySet [<1>, &

有人能说出如何组合(合并)多个查询集吗。查询集的数量不是固定的。我尝试了下一个代码,但它并没有像我预期的那样工作。如何解决这个问题

first_list = []
for id in ids:
   products = Product.objects.filter(company=id)
   first_list.append(products)

final_list = list(chain(first_list))
此代码返回:

[<QuerySet [<1>, <2>]>, <QuerySet [<3>, <4>]>, <QuerySet [<5>, <6>]>]
[,]
我需要:

[<QuerySet [<1>, <2>, <3>, <4>, <5>, <6>]>,]
[,]

看起来好像您只是试图获得一个与现有列表匹配的产品列表,因此您可以使用,如果出于某种原因确实需要查询集列表,您也可以将其作为一个列表

 products = Product.objects.filter(company_id__in=ids)
 odd_list = [products]

这样做的另一个好处是,它对数据库执行单个查询,而不是
n
查询,它还避免了手动解析查询集的需要,从而使查询保持为惰性查询,并允许您根据需要使用进一步的筛选来扩展此查询。

是否正在查找
Product.objects.filter(company_id_uuin=ids)
?我不明白你的意思?我不明白你实际上想做什么,我假设你想在你已经拥有的id集合中(也假设公司是FK)获得所有公司的产品,这里是
in
操作符
条目.objects.filter(id_uin=[1,3,4]的正式文档)
forstatement@Sayse谢谢!这就是我要找的!你能不能再回答一次而不是作为评论。我可以标记你的答案。回答得好,但我希望你能补充一点,为什么这比OP最初的尝试要多too@e4c5-说得好,我增加了一句话来扩展根据它的能力。谢谢