python-3.x - Django Rest:AssertionError:无法将唯一查询与非唯一查询组合
问题描述
我正在尝试获取具有模型项目唯一实例的查询集。当我尝试将多个查询集与 & 运算符结合起来时
projects = (q1_projects & q2_projects & q3_projects)
我收到这个错误
AssertionError:无法将唯一查询与非唯一查询组合。
解决方案
您可以使用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
参数。
但是如果你想order_by
在 ForeignKey 上,你必须使用select()
推荐阅读
- google-chrome - 无法在 Chrome 浏览器上使用谷歌“产品”
- google-bigquery - 如何检查 Google BigQuery SQL 中的多个模式?(喜欢 + 输入)
- python - 从存储在 Google Cloud Storage 中的文件创建 tar 存档
- python - 如何使用 yfinance 检测失败的下载
- c - 如何在 MacOS for Windows 上编译
- angular - Angular AsyncValidatorFn 导致 CPU 和内存使用率高
- apache - RedirectMatch 添加额外的 url 段
- php - 在本地加入 Zoom Web sdk 加入 Zoom 会议,然后遇到错误“加入会议超时”和“签名无效”
- javascript - 制作类似于material ui的vue slot结构
- r - AWS EMR 上的 sparklyr 未开始运行