Вы должны немного изменить дизайн своей модели.Разработайте свою модель следующим образом:
class Email(models.Model):
user = models.ForeignKey(CustomUser)
email = models.EmailField()
primary = models.BooleanField()
Это позволяет неограниченное количество электронных писем пользователей и возможность устанавливать различные параметры для одного письма.
Как только пользователь помечает один из своих адресов электронной почты как основной, вы можетепросто сначала измените поле primary
для всех его писем на False
, а затем запрашиваемое на True
.
user_emails = Email.objects.filter(user=request.user).update(primary=False)
primary_email = Email.objects.get(pk=email_id, user=request.user)
primary_email.primary = True
primary_email.save()
Затем вам нужно решить, как обрабатывать адреса электронной почты от пользователя (или CustomUser) модель.Вы можете создать сигнал сохранения после записи для сохранения адресов электронной почты от модели пользователя до этой модели электронной почты.