Sie können hier mit einer Unterabfrage arbeiten, aber es wird nicht viel in Bezug auf die Leistung ausmachen, denke ich:
from django.db.models import Exists, OuterRef, Q
UserNames.objects.filter(
Exists(UserNames.objects.filter(
~Q(user_id=OuterRef('user_id')),
first_name=OuterRef('first_name')
))
)
oder vor django-3.0 :
from django.db.models import Exists, OuterRef, Q
UserNames.objects.annotate(
has_other=Exists(UserNames.objects.filter(
~Q(user_id=OuterRef('user_id')),
first_name=OuterRef('first_name')
))
).filter(has_other=True)
Wir behalten also UserNames
Objekte, für die ein UserNames
existiert Objekt mit demselben first_name
, und mit einer anderen user_id
.