중복 필드 값이 있는 행에 대한 Django 쿼리
고유하지 않은 필드가 있는 Django 모델이 있다고 가정합니다. 해당 필드에 대해 하나 이상의 중복 값이 있는 모델의 모든 행을 선택해야 합니다.
일반 SQL 접근 방식
한 가지 가능한 해결책은 일반 SQL을 사용하는 것입니다.
SELECT * FROM literal WHERE name IN ( SELECT name FROM literal GROUP BY name HAVING COUNT(*) > 1 );
Django ORM 접근법
Django의 ORM을 사용하면 value(), annotate(), order_by() 및 filter()의 조합으로 동일한 결과를 얻을 수 있습니다.
from django.db.models import Count dupes = Literal.objects.values('name') \ .annotate(Count('id')) \ .order_by() \ .filter(id__count__gt=1)
위의 코드는 ValuesQuerySet을 반환하므로 이를 일반 QuerySet으로 변환하여 필터:
duplicates = Literal.objects.filter(name__in=[item['name'] for item in dupes])
이 접근 방식을 사용하면 이름 값이 중복된 행만 선택할 수 있습니다.
위 내용은 Django ORM을 사용하여 중복된 필드 값이 있는 행을 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!