python - Django QuerySet 查找返回多个对象
问题描述
我有一个返回多个(重复)对象的 QS 查找:
queryset = queryset.filter(
Q(receiver__exact=user_emp_type)) | queryset.filter(Q(sender__exact=self.request.user))
它返回的对象数量与接收者 M2M 字段的长度相同。例如,如果 M2Mreceiver
字段中有 3 个接收器,则将有 3 个重复对象。
为什么会这样?
解决方案
您需要定义您想要的distinct()
对象(没有重复)。代码现在看起来像这样(注意:删除了Q
查找):
queryset = queryset.filter(receiver=user_emp_type) | queryset.filter(sender=self.request.user)
return queryset.distinct() # return distinct queryset
我不知道为什么我需要告诉它,distinct()
如果有人可以在这里插话,我只想要对象。
推荐阅读
- swift - FetchRequest NSPredicate 无效而不是删除?
- sql-server - Flyway 可以将 V1__*.sql 文件拆分为多个文件,如 V1__1.sql、V1__2.sql
- javascript - 如何在已经有 innerText 的按钮元素上添加或定义新值?
- proxy - 赛普拉斯自动将代理服务器设置为 https//127.0.0.153576 虽然我已经设置了环境变量
- angular - 如何在 Angular 单元测试中模拟从 afterClosed 发送的 MatDialog 响应?
- ruby-on-rails - 从具有相同列名的连接表中提取后使用符号进行映射
- java - 未从数据库中检索相关的下拉数据和图像
- python - 使用 Pandas 的 MySQL 中单个索引键中的多个列
- php - 如何以忍者形式电子邮件发送 woocommerce 购物车详细信息?
- ssh - Ansible ssh exec 上下文和在没有 ansible 的情况下运行相同的 ssh 命令之间的区别?