Чтобы избавиться от всех дубликатов из вашей базы данных, вы должны задать себе вопрос сначала - что с ними делать? Удалить? Слиться как-нибудь? Изменить имя каждого дубликата?
После ответа на этот вопрос просто создайте перенос данных (при миграции RunPython), которые будут выполнять желаемую операцию для каждой дублированной записи.
Чтобы найти все дубликаты, вы можете сделать:
with_duplicates = Doctor.objects.annotate(count=Count('id')).order_by('id').distinct('name').filter(count__gt=1)
Этот запрос будет получать из базы данных первой (по идентификатору) запись из дублей группы (например, если у вас есть 3 доктора под названием «кто», то это будет возьмите первый из них, и он доставит только врачей с дубликатами).
Имея, что для каждого врача, которые имеют дубликаты, вы можете получить список того, что дублирует:
with_duplicates = Doctor.objects.annotate(count=Count('id')).order_by('id').distinct('name').filter(count__gt=1)
for doctor in with_duplicates:
duplicates = Doctor.objects.filter(name=doctor.name).exclude(id=doctor.id)
И сделать что-то с ними.
Возможный дубликат [Django выбрать только строки с повторяющимися значениями поля] (http://stackoverflow.com/questions/8989221/django-select-only-rows-with-duplicate-field-values) – sobolevn