Mam formularz, który dziedziczy z 2 innych formularzy. W mojej formie chcę zmienić etykietę pola, które zostało zdefiniowane w jednej z form nadrzędnych. Czy ktoś wie, jak można to zrobić?Formularz Django - zestaw etykiet
Próbuję to zrobić w moim __init__
, ale powoduje to błąd informujący, że obiekt "RegistrationFormTOS" nie ma atrybutu "e-mail" ". Czy ktoś wie, jak mogę to zrobić?
Dzięki.
Oto mój kod forma:
from django import forms
from django.utils.translation import ugettext_lazy as _
from registration.forms import RegistrationFormUniqueEmail
from registration.forms import RegistrationFormTermsOfService
attrs_dict = { 'class': 'required' }
class RegistrationFormTOS(RegistrationFormUniqueEmail, RegistrationFormTermsOfService):
"""
Subclass of ``RegistrationForm`` which adds a required checkbox
for agreeing to a site's Terms of Service.
"""
email2 = forms.EmailField(widget=forms.TextInput(attrs=dict(attrs_dict, maxlength=75)), label=_(u'verify email address'))
def __init__(self, *args, **kwargs):
self.email.label = "New Email Label"
super(RegistrationFormTOS, self).__init__(*args, **kwargs)
def clean_email2(self):
"""
Verifiy that the values entered into the two email fields
match.
"""
if 'email' in self.cleaned_data and 'email2' in self.cleaned_data:
if self.cleaned_data['email'] != self.cleaned_data['email2']:
raise forms.ValidationError(_(u'You must type the same email each time'))
return self.cleaned_data
Problem z tą odpowiedzią jest to, że nie wyjaśnia, w jaki sposób zmienić 'etykietę pola, który został zdefiniowany w jednym formy rodzica "- najważniejsza jest forma rodzica. – jamesc
To nie działa dla mnie ... '__init __() dostał nieoczekiwany argument słowa kluczowego 'label''' – User
Didnt' działa w formularzu administratora! – Raptor