Фильтруйте, затем упорядочивайте и разбирайтесь в наборе запросов - PullRequest
0 голосов
/ 17 мая 2019

У меня есть список агентов, я хочу отфильтровать этот список, а затем упорядочить его по комментариям, которые они написали (если агент написал комментарий, он должен появиться вверху моего списка).Проблема в том, что в моем списке 3 раза одни и те же агенты, потому что он написал 3 комментария.

Я пытался добавить отчетливое в конец запроса, но я получил эту ошибку: NotImplementedError: DISTINCT ON fields is not supported by this database backend

Здесь мой запрос, который производит x агентов, если один агент написал x комментариев

agents = Agent.objects.filter(name__icontains=name, metier__name__icontains=metier,
                                          code_uf__icontains=code_uf, grade_code__icontains=grade,
                                          matricule__icontains=matricule).order_by('-comments')

Здесь запрос с отличным:

agents = Agent.objects.filter(name__icontains=name, metier__name__icontains=metier,
                                          code_uf__icontains=code_uf, grade_code__icontains=grade,
                                          matricule__icontains=matricule).order_by('-comments').distinct('comments')

Я ожидал получить список агентов без дубликатов агентов.Тип списка должен быть queryset (потому что я использую все параметры после).На данный момент в моем списке 3 раза один и тот же агент, потому что он написал 3 комментария ...

1 Ответ

2 голосов
/ 17 мая 2019

Хорошо, после дополнительных исследований я нашел решение. Я использовал annotate, затем order_by на этом annotate.

agents = Agent.objects.filter(name__icontains=name, metier__name__icontains=metier,
                                          code_uf__icontains=code_uf, grade_code__icontains=grade,
                                          matricule__icontains=matricule).annotate(temp_date=Max("comments__date_created")).order_by("-temp_date") 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...