Дублированные результаты после фильтрации - PullRequest
0 голосов
/ 20 июня 2019

Когда я фильтрую по id, first_name или last_name, я получаю дублированные результаты.Если я поставлю .distinct() после filter(), я получу еще больше повторяющихся результатов, чем раньше.Кажется, это отношение involved__user__.

order = request.GET.get('order_by','orderDate')
jobs = Job.objects.order_by(order)

            if _filter:
                jobs = jobs.filter(Q(bundle__icontains=_filter) | 
                                Q(onBehalfOf__icontains=_filter) | 
                                Q(involved__user__first_name__icontains=_filter) | 
                                Q(involved__user__last_name__icontains=_filter) | 
                                Q(involved__user__email__icontains=_filter) | 
                                Q(description__icontains=_filter) | 
                                Q(id__iexact=_filter))

С distinct() я получаю еще больше повторяющихся результатов, чем без него:

order = request.GET.get('order_by','orderDate')
jobs = Job.objects.order_by(order)

        if _filter:
            jobs = jobs.filter(Q(bundle__icontains=_filter) | 
                            Q(onBehalfOf__icontains=_filter) | 
                            Q(involved__user__first_name__icontains=_filter) | 
                            Q(involved__user__last_name__icontains=_filter) | 
                            Q(involved__user__email__icontains=_filter) | 
                            Q(description__icontains=_filter) | 
                            Q(id__iexact=_filter)).distinct()

Моя модель:

class Job(models.Model):
    involved = models.ManyToManyField(UserProfile, through="Membership")
    ...

class Membership(models.Model):
    user = models.ForeignKey(UserProfile)
    job = models.ForeignKey(Job)
    ...

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...