Когда я фильтрую по 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)
...