Cette requête ne vous donnera pas de doublons - c'est-à-dire qu'elle vous donnera toutes les lignes de la base de données, classées par email.
Cependant, je suppose que vous voulez dire que vous avez des données en double dans votre base de données. Ajout de distinct()
ici ne sera pas utile, car même si vous n'avez qu'un seul champ, vous avez aussi un champ automatique id
La combinaison id+email n'est donc pas unique.
En supposant que vous n'ayez besoin que d'un seul champ, email_address
dédupliqués, vous pouvez le faire :
email_list = Email.objects.values_list('email', flat=True).distinct()
Cependant, vous devez vraiment résoudre le problème de base et supprimer les données en double de votre base de données.
Exemple, suppression des doublons d'e-mails par champ d'e-mail :
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()
Ou des livres par nom :
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()
3 votes
Lorsqu'il s'agit de rangs multiples, veuillez consulter : stackoverflow.com/questions/13700200/
0 votes
Ce site c'est répondre en résolvant ce qui a été demandé, avec soi-même groupe par en retournant QuerySet.