anulando el método get_form () para personalizar la vista de administrador según el usuario
Frecuentes
Visto 986 veces
0
def get_form(self, request, obj=None, **kwargs):
if request.user.is_superuser:
self.exclude=[]
else:
self.fields=['employer_verified']
return super(EmployerAdmin, self).get_form(request, obj, **kwargs)
Tengo este código para anular el método get_form() para personalizar la vista de acuerdo con el usuario. Funciona bien cuando el superusuario inicia sesión, pero el problema es cuando el miembro del personal inicia sesión y luego se muestra el inicio de sesión de superusuario solo empleador_verificado, supongo que el el problema es que no se excluye nada de los campos que ahora es igual a 'verificado por el empleador'
1 Respuestas
1
No deberías establecer self.exclude
en la get_form
método, no es seguro para subprocesos. En su lugar, puede definir dos clases de formulario diferentes y devolver la correcta dependiendo de user.is_superuser
.
class EmployerForm(forms.ModelForm):
class Meta:
model = Employer
fields = ['employer_verified',]
class EmployerSuperUserForm(forms.ModelForm):
class Meta:
model = Employer
def get_form(self, request, obj=None, **kwargs):
if request.user.is_superuser:
return EmployerSuperUserForm
else:
return EmployerForm
self.fields=['employer_verified']
contestado el 22 de mayo de 12 a las 14:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas django django-forms python-2.7 or haz tu propia pregunta.
¡Feliz de ayudar! Haga clic en la marca de arriba para mostrar que he respondido a su pregunta. - Alasdair