Этот запрос не даст вам дубликатов, т. Е. Он даст вам все строки в базе данных, упорядоченные по электронной почте.
Однако я предполагаю, что вы имеете в виду, что у вас есть дубликаты данных в вашей базе данных. Добавление distinct()
здесь не поможет, потому что даже если у вас есть только одно поле, у вас также есть автоматическое поле id
, поэтому комбинация id + email не уникальна.
Предполагая, что вам нужно только одно поле, email_address
, без дубликатов, вы можете сделать это:
email_list = Email.objects.values_list('email', flat=True).distinct()
Однако вы должны действительно решить проблему с корнем и удалить дубликаты данных из вашей базы данных.
Пример, удаление дубликатов писем по электронной почте:
for email in Email.objects.values_list('email', flat=True).distinct():
Email.objects.filter(pk__in=Email.objects.filter(email=email).values_list('id', flat=True)[1:]).delete()
Или книги по имени:
for name in Book.objects.values_list('name', flat=True).distinct():
Book.objects.filter(pk__in=Artwork.objects.filter(name=name).values_list('id', flat=True)[3:]).delete()