2017-01-23 5 views
4

Ich möchte eine Benachrichtigung an Benutzer senden, die zuvor in der Anfrage kommentiert hat. Zu diesem Zweck muss ich verschiedene Benutzer finden und die aktuelle Benutzer-ID aus dieser Liste ausschließen.Django Query Set mit distinct und ausschließen zusammen

object_id_list = ScAns.objects.filter(username=username).values_list('id',flat=True) 

result-> QuerySet [22]

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

result-> QuerySet [13, 15, 22]

Endergebnis sollte nicht enthalten 22. Es geben sollte [13,15 ]

+0

Haben Sie versucht, das Ausschließen vor dem distinct? (Du könntest auch das '__in' vermeiden, indem du einfach 'exclude (username = username)' machst.) – Sayse

+0

danke, das hat geholfen –

Antwort

2

Sie sollten den Ausschluss vor dem Aufruf von distinct, auch, um die unnötige __in zu vermeiden können Sie einfach basierend auf dem Benutzernamen auszuschließen.

actionUsers = ScAnsAction.objects.filter(req_id=request_id)).exclude(username=username).values_list('user_id',flat=True).distinct() 
Verwandte Themen