Django регитрация
Дополнил стандартную модель пользователя своими полями, хочу добавить в форму регистрации эти поля, но ничего не получается, пробовал разные варианты
class UserRegisterForm(forms.ModelForm):
username = forms.CharField()
password = forms.PasswordInput()
confirm_password = forms.PasswordInput()
phone = PhoneNumberField()
name = forms.CharField()
email = forms.EmailField()
def __init__(self, *args, **kwargs):
super().__init__(self, *args, **kwargs)
self.fields['username'].label = 'Логин'
self.fields['password'].label = 'Пароль'
self.fields['confirm_password'].label = 'Подтверждение пароля'
self.fields['phone'].label = 'Номер телефона'
self.fields['name'].label = 'Имя'
self.fields['email'].label = 'Почта'
def clean_email(self):
email = self.cleaned_data['email']
if User.objects.filter(email=email).exists():
raise forms.ValidationError('Данный почтовый адрес уже зарегистрирован в системе')
return email
def cean_username(self):
username = self.cleaned_data['username']
if User.objects.filter(username=username).exists():
raise forms.ValidationError(f'Имя {username} уже занято')
return username
def clean(self):
password = self.cleaned_data['password']
confirm_password = self.cleaned_data['confirm_password']
if password != confirm_password:
raise forms.ValidationError('Пароли не совпадают')
return self.cleaned_data
class Meta:
model = User
fields = ['username', 'password', 'confirm_password', 'phone', 'name', 'email']
Вот второй вариант
class UserRegisterForm(UserCreationForm):
class Meta:
model = User
fields = ['username', 'password1', 'password2', 'phone', 'first_name', 'email']
Модель
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
phone = PhoneNumberField(blank=True)
birth_day = models.DateField(null=True, blank=True)
photo = models.ImageField(
'Фото пользователя', upload_to='user/photo/', blank=True, null=True)
orders = models.ManyToManyField('Order', related_name='orders', verbose_name='заказы', blank=True)