मैं निम्नलिखित फार्म और विरासत में मिला रूप है:मैं Django में किसी रूप में विरासत वाले क्षेत्र को कैसे बाहर निकालूं?
class UsuarioAdminForm(ModelForm):
first_name = forms.CharField(label='Nombre', help_text = 'Nombre del usuario', required=True)
last_name = forms.CharField(label='Apellidos', help_text = 'Apellidos del usuario', required=True)
dni = ESIdentityCardNumberField(help_text = 'DNI del usuario', required=True, widget = forms.TextInput(attrs = {'size': 9}))
username = forms.CharField(label='Login', help_text = 'Requerido. 30 caracteres o menos. Letras, números y @/./+/-/_', widget = forms.TextInput(attrs = {'size': 15}))
#password = forms.CharField(widget=forms.PasswordInput(attrs = {'size': 12}), label='Contraseña', help_text = 'Contraseña del usuario')
email = forms.EmailField(help_text = 'Correo electrónico del usuario', required=True)
movil = ESPhoneNumberField(help_text = 'Movil principal del usuario', required=True, widget = forms.TextInput(attrs = {'size': 9 }))
is_staff = forms.BooleanField(label = "Administrador", help_text = 'Marque la casilla si desea crear un administrador')
tipo_u = forms.ChoiceField(label = 'Tipo de usuario', choices = TipoUsuarios)
def clean(self):
try:
cleaned_data = self.cleaned_data
movil = self.cleaned_data['movil']
dni = self.cleaned_data['dni']
email = self.cleaned_data['email']
except:
raise forms.ValidationError(u'Todos los campos del Formulario son Obligatorios.')
return cleaned_data
class Meta:
model = Usuario
exclude = ('is_active','date_joined', 'last_login', 'user_permissions', 'tipo', 'groups', 'is_superuser',)
class UsuarioForm(UsuarioAdminForm):
is_staff = None
def __init__(self, *args, **kwargs):
self.is_staff = None
super(UsuarioForm,self).__init__(*args, **kwargs)
class Meta:
model = Usuario
exclude = ('is_staff', 'is_active','date_joined', 'last_login', 'user_permissions', 'tipo', 'groups', 'is_superuser', 'password',)
लेकिन जब मैं एक UsuarioForm वस्तु बनाने, क्यों यह is_staff क्षेत्र दिखाता है?
अद्यतन:
def __init__(self, *args, **kwargs):
super(UsuarioForm,self).__init__(*args, **kwargs)
self.is_staff = None
तुम भी कर सकता है::
TemplateSyntaxError at /sms/usuarios/add/user/
Caught AttributeError while rendering: 'NoneType' object has no attribute 'label'
फिर इसे जोड़ने के लिए आसान है, "is_staff" फ़ील्ड के बिना UsuarioForm बनाएं और UsuarioAdminForm wil में केवल एक - वास्तविक "is_staff = .." (यह सबसे आसान है और हमेशा काम करेगा)। क्लास एट्रिब्यूट को निकालने के लिए आप del (self.is_staff) (__init__ में) का उपयोग कर सकते हैं लेकिन इसके अतिरिक्त परिणाम हो सकते हैं क्योंकि मेटा क्लासेस शामिल हैं - इसलिए इसका उपयोग न करने का प्रयास करें। :) – Jerzyk