合并或联合动态创建的查询集列表 - Django

Posted

技术标签:

【中文标题】合并或联合动态创建的查询集列表 - Django【英文标题】:Merge or Union a list of dynamically created querysets - Django 【发布时间】:2021-09-03 13:46:58 【问题描述】:

我有一个查询集列表,如下所示。有没有办法将列表的所有这些查询集合并到一个查询集中?该列表的查询集元素是动态确定的。如下例所示,它是列表中的三个查询集。在下一次假设的迭代中,它可能是 40 个查询集。

capture_list =[<QuerySet [<Fields_Model: Fields_Model object (11)>]>,<QuerySet [<Fields_Model: Fields_Model object (12)>]>,<QuerySet [<Fields_Model: Fields_Model object (13)>]>]

【问题讨论】:

【参考方案1】:

您可以将这些与:

Fields_Model.objects<b>.none().union(</b>*capture_list<b>)</b>

因此,星号会将查询集“解包”为.union(…) call [Django-doc] 的单独参数。

使用.union(…) 调用只会选择不同 对象,因此不会重复。如果要获取副本,可以all=True参数:

Fields_Model.objects.none().union(*capture_list<b>, all=True</b>)

【讨论】:

以上是关于合并或联合动态创建的查询集列表 - Django的主要内容,如果未能解决你的问题,请参考以下文章

包含列表中所有值的 Django 反向查询集

如何合并两个查询集并在 django 中创建新的查询集

如何使用两个列表查询集过滤器?

Django在一页中合并查询集

无法将 Django 查询集转换为列表 [重复]

union all 联合查询