Как я могу сохранить имя пользователя в базе данных в виде электронного письма?
Мне нужна страница регистрации с 3 полями (email, пароль и повторный пароль). Моя цель состоит в том, чтобы когда пользователь вводит адрес электронной почты, он также сохранялся в базе данных как имя пользователя. Я буду очень рад, если кто-то сможет мне помочь, я сижу уже х часов, пытаясь решить эту проблему. Большое спасибо!
model.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
email_confirmed = models.BooleanField(default=False)
@receiver(post_save, sender=User)
def update_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
instance.profile.save()
forms.py
class CreateUserForm(UserCreationForm):
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
# Sign Up Form
class SignUpForm(UserCreationForm):
# first_name = forms.CharField(max_length=30, required=False, help_text='Optional')
# last_name = forms.CharField(max_length=30, required=False, help_text='Optional')
email = forms.EmailField(max_length=254, help_text='Enter a valid email address')
class Meta:
model = User
fields = [
'username',
'password1',
'password2',
]
views.py
Мне нужна ваша помощь
Если вы хотите использовать email
вместо модели по умолчанию username
, вы должны перезаписать модель по умолчанию User
пользовательской моделью
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin
class User(AbstractBaseUser, PermissionsMixin):
# Use the email for logging in
email = models.EmailField(max_length=254, unique=True)
USERNAME_FIELD = 'email'