首页 > 解决方案 > Django QuerySet 查找返回多个对象

问题描述

我有一个返回多个(重复)对象的 QS 查找:

queryset = queryset.filter(
            Q(receiver__exact=user_emp_type)) | queryset.filter(Q(sender__exact=self.request.user))

它返回的对象数量与接收者 M2M 字段的长度相同。例如,如果 M2Mreceiver字段中有 3 个接收器,则将有 3 个重复对象。

为什么会这样?

标签: pythondjango

解决方案


您需要定义您想要的distinct()对象(没有重复)。代码现在看起来像这样(注意:删除了Q查找):

queryset = queryset.filter(receiver=user_emp_type) | queryset.filter(sender=self.request.user)
return queryset.distinct() # return distinct queryset

我不知道为什么我需要告诉它,distinct()如果有人可以在这里插话,我只想要对象。


推荐阅读