ここでサブクエリを操作できますが、パフォーマンスの観点からはそれほど重要ではないと思います:
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')
))
)
または
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)
したがって、UserNames
を保持します UserNames
が存在するオブジェクト 同じfirst_name
を持つオブジェクト 、および別のuser_id
。