Джанго Аллах заменяет этикетки
У меня есть следующая форма, которая ACCOUNT_SIGNUP_FORM_CLASS
указывает на
class SignupForm(forms.Form):
def __init__(self, *args, **kwargs):
super(SignupForm, self).__init__(*args, **kwargs)
for field_name in self.fields.keys():
print(field_name, self.fields[field_name].label)
Я пытаюсь заменить метки для каждого из следующих полей: username
, email
, password1
а также password2
, Когда форма инициируется, печатается следующее.
username Username
email None
Но отображаемая форма в моих браузерах показывает все поля с их метками
Username*
E-mail*
Password*
Password (again)*
Почему это только username
а также email
печатаются, и почему email
метка поля None
все же это показывает очень хорошо, когда это предоставлено.
Как я могу изменить метки всех четырех полей?
1 ответ
Вы не можете это сделать в форме, установленной на ACCOUNT_SIGNUP_FORM_CLASS
, Эта форма используется в качестве базового класса для RegistrationForm от allauth. Таким образом, вы не можете изменить любое поле, потому что оно не существует в этой форме (только в подклассе). Чтобы сделать то, что вы хотите, вы должны создать подкласс RegistrationForm из django allauth и использовать его в качестве реальной формы регистрации, которую можно установить так:
# On settings
ACCOUNT_FORMS = {'signup': 'path.to.custom.singup.form'}
Пользовательская форма регистрации должна наследоваться от формы входа django allauth следующим образом:
from allauth.account.forms import SignupForm
class CustomSignupForm(SignupForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# here you can change the fields
self.fields['email'] = forms.EmailField(label='custom label')