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



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

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

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

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

这样做的另一个优点是,这会对数据库执行单个查询而不是n查询,它还避免了手动解析查询集的需要,以便它保持惰性查询,并允许您根据需要使用此查询进行扩展。

相关内容

  • 没有找到相关文章

最新更新