Bạn có thể làm việc với một truy vấn con ở đây, nhưng tôi nghĩ nó sẽ không quan trọng lắm về mặt hiệu suất:
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')
))
)
hoặc trước 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)
Do đó, chúng tôi giữ lại UserNames
các đối tượng tồn tại UserNames
đối tượng có cùng first_name
và với một user_id
khác .