如何合并多个查询集?

2024-06-30 14:29:32 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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>]>,]

Tags: 代码inididsforobjectsproductfilter
1条回答
网友
1楼 · 发布于 2024-06-30 14:29:32

似乎您只是试图获得一个与现有列表匹配的产品列表,因此您可以使用^{},如果出于某种原因确实需要一个查询集列表,那么您也可以将其设置为一个列表

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

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

相关问题 更多 >