【问题标题】:Django Rest : AssertionError: Cannot combine a unique query with a non-unique queryDjango Rest:AssertionError:无法将唯一查询与非唯一查询组合
【发布时间】:2021-05-01 03:22:44
【问题描述】:

我正在尝试获取具有模型项目的唯一实例的查询集。当我尝试将多个查询集与 & 运算符类似

projects = (q1_projects & q2_projects & q3_projects)

我收到此错误

AssertionError:无法将唯一查询与非唯一查询组合。

【问题讨论】:

标签: python-3.x django django-rest-framework operators django-queryset


【解决方案1】:

As quoted by ruddra

您可以使用union() 组合不同的查询集,如下所示:

q1_projects = Model.objects.filter(...)
q2_projects = Model.objects.filter(...)
q3_projects = Model.objects.filter(...)

projects = q1_projects.union(q2_projects, q3_projects)

这将给出相同的结果:

projects = q1_projects & q2_projects & q3_projects

注意:UNION 运算符默认只选择不同的值。要允许重复值,请使用 all=True 参数。

但是如果你想在 ForeignKey 上使用order_by,你必须使用select()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 2013-08-30
    • 2015-06-14
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多