Django Rest:AssertionError:无法将唯一查询与非唯一查询组合
Posted
技术标签:
【中文标题】Django Rest:AssertionError:无法将唯一查询与非唯一查询组合【英文标题】:Django Rest : AssertionError: Cannot combine a unique query with a non-unique query 【发布时间】:2021-05-01 03:22:44 【问题描述】:我正在尝试获取具有模型项目的唯一实例的查询集。当我尝试将多个查询集与 & 运算符类似
projects = (q1_projects & q2_projects & q3_projects)
我收到此错误
AssertionError:无法将唯一查询与非唯一查询组合。
【问题讨论】:
您会指定确切的查询吗? 试试这个docs.djangoproject.com/en/3.1/topics/db/queries/… 【参考方案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()
【讨论】:
以上是关于Django Rest:AssertionError:无法将唯一查询与非唯一查询组合的主要内容,如果未能解决你的问题,请参考以下文章
为啥 django-rest-framework 不显示 OneToOneField 数据 - django
Django + AngularJS:没有使用普通 URL 和视图的 Django REST 框架的类 REST 端点?
Django Rest Framework 和 django Rest Framework simplejwt 两因素身份验证
Django-rest-framework 和 django-rest-framework-jwt APIViews and validation Authorization headers