Django ManyToManyField 多个条件过滤

我在使用Django ManyToManyField 过滤时出了些问题,我不能理解它。
我的目的是:想做一个任务单,这个任务单可以发布指派给一些人查看。
我遇到的问题:这个任务单在被指派人登陆中查看没有问题,但发布人查看会重复显示多条相同的数据。

#views
class TaskView(LoginRequiredMixin, View):
    def get(self, request):
        projecttask_all = ProjectTask.objects.filter(Q(owner=request.user.username) | Q(task_member=request.user))

        print(projecttask_all)
# 使用owner登陆 print results  
<QuerySet [<ProjectTask: user1>, <ProjectTask: user1>]>
// 我实际需要的是只输出<QuerySet [<ProjectTask: user1>]>,因为task_member中没有包含owner
# model
class ProjectTask(models.Model):
   title = models.CharField(max_length=100, verbose_name='title', default='')
   owner = models.CharField(max_length=30, verbose_name='owner')
   task_member = models.ManyToManyField('UserProfile',related_name='task_member', blank=True, null=True)
# mysql
projecttask
| id | title | owner | 
| -- | ----- | ----- |
| 1  | test  | user1 |
projecttask_task_member
| id | projecttask_id | userprofile_id | 
| -- | -------------- | -------------- |
| 1  |        1       |       8        |
| 2  |        1       |       9        |

我找到了答案,增加 .distinct()可以解决我的问题,我没有使用过应该需要花些时间去了解一下。

 // .distinct()
 projecttask_all = ProjectTask.objects.filter(Q(owner=request.user.username) | Q(task_member=request.user)).distinct()

厉害