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)
#print results
<QuerySet [<ProjectTask: user1>, <ProjectTask: user1>]>
// My understanding should be like <QuerySet [<ProjectTask: user1>]>, because the owner is not in projecttask_task_member,but it is not.
#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 |