我有一个座席列表,我想过滤该列表,然后按他们所写的评论进行排序(如果座席写了评论,那么他应该出现在我列表的顶部)。问题是我得到的名单中相同代理人的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条评论...
答案 0 :(得分:2)
好吧,经过更多的研究,我找到了解决方案。我在此annotate
上使用过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")
。
{{1}}