过滤,然后排序并在查询上获得不同的结果

2024-05-02 09:20:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个代理列表,我想过滤这个列表,然后按他们写的评论排序(如果代理写了评论,那么他应该出现在我的列表顶部)。问题是我的名单上有三个相同的经纪人,因为他写了三条评论

我试图在查询末尾添加distinct,但出现以下错误: 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')

下面是带有distinct的查询:

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(因为我使用的是all param after)。现在我的名单上有三次是同一个经纪人,因为他写了三条评论


Tags: name代理列表by评论经纪人codecomments
1条回答
网友
1楼 · 发布于 2024-05-02 09:20:57

好吧,经过更多的研究,我找到了解决办法。我使用了^{},然后在这个annotate上使用了order_by

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") 

相关问题 更多 >