Django 查询设置与distinct 和exclusion 一起

Nat*_*bov 5 python django django-queryset

我想向之前在请求中发表评论的用户发送通知。因此,为了这个目标,我必须找到不同的用户并从该列表中排除当前评论者(用户)ID。

object_id_list = ScAns.objects.filter(username=username).values_list('id',flat=True)
Run Code Online (Sandbox Code Playgroud)

结果->查询集[22]

actionUsers = ScAnsAction.objects.filter(req_id=request_id).values_list('user_id',flat=True).distinct().exclude(id__in=object_id_list)
Run Code Online (Sandbox Code Playgroud)

结果-> 查询集 [13, 15, 22]

最终结果不应包含 22。它应该给出 [13,15]

Say*_*yse 2

您应该在调用distinct 之前进行排除,为了避免不必要的情况,__in您可以根据用户名进行排除。

actionUsers = ScAnsAction.objects.filter(req_id=request_id)).exclude(username=username).values_list('user_id',flat=True).distinct()
Run Code Online (Sandbox Code Playgroud)