RZs ответ на самом деле почти правильный. Я не знаю, лучший ли это способ, но он работает. Так что для этой единственной цели вы можете использовать его.
Однако я хотел бы добавить и исправить некоторые вещи.
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()
Я попробовал это на небольшом примере, и это сработало. Но я настоятельно рекомендую вам проверить это до того, как вы действительно используете его в своей производственной системе!
Надеюсь, это поможет вам.
// Редактировать
Я бы также рекомендовал вам не разрешать добавлять пользователей, если электронная почта уже зарегистрирована. Должен быть какой-то встроенный метод для достижения этой цели. А если нет, то вы можете создать подкласс модели Djangos User с вашей собственной моделью User и переопределить метод сохранения.