Esta consulta no le dará duplicados, es decir, le dará todas las filas en la base de datos, ordenadas por correo electrónico.
Sin embargo, supongo que lo que quieres decir es que tienes datos duplicados dentro de tu base de datos. Agregar distinct()
aquí no ayudará, porque incluso si solo tiene un campo, también tiene un campo automático id
, por lo que la combinación de id + email no es única.
Suponiendo que sólo necesita un campo, email_address
, de-duplicado, se puede hacer esto:
email_list = Email.objects.values_list('email', flat=True).distinct()
Sin embargo, realmente debería solucionar el problema de raíz, y eliminar los datos duplicados de su base de datos.
ejemplo, al eliminar correos electrónicos duplicados de campo de correo electrónico:
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()
o libros por su nombre:
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()
Cuando se trata de varias filas, consulte: http://stackoverflow.com/questions/13700200/django-remove-duplicate-objects-where-there -is-más-de-uno-campo-para-comparar/13700642 # 13700642 –