La réponse RZ est en réalité presque correcte. Je ne sais pas si c'est la meilleure façon, mais ça marche. Donc, pour ce but une fois, vous pouvez l'utiliser.
Cependant, je voudrais ajouter et corriger certaines choses.
from django.contrib.auth.models import User
def delete_duplicate_users():
// first find all email addresses (with kind of a 'group by')
emails = User.objects.values('email').distinct()
for e in emails:
users = User.objects.filter(email=e['email']).order_by('date_joined')[1:]
for u in users:
u.delete()
J'ai essayé ceci avec un petit exemple et cela a fonctionné. Mais je vous recommande fortement de tester ceci avant de l'utiliser sur votre système de production!
Espérons que cela vous aide.
// Modifier
Je recommande également que vous ne permettez pas à l'ajout d'utilisateurs si l'email est déjà enregistré. Il devrait y avoir une méthode intégrée pour y parvenir. Et sinon, vous pouvez sous-classer le modèle utilisateur Djangos avec votre propre modèle utilisateur et remplacer la méthode de sauvegarde.
Merci, cela a parfaitement fonctionné. Il y avait juste une chose que je devais changer. La ligne 5 devrait être emails = User.objects.values ('email'). Distinct() au lieu de emails = Users.objects.values ('email'). Distinct() – Catalina
Merci. J'ai corrigé la faute de frappe. – Jens