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-说得好,我增加了一句话来扩展根据它的能力。谢谢