anulando el método get_form () para personalizar la vista de administrador según el usuario

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'

preguntado el 22 de mayo de 12 a las 12:05

1 Respuestas

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

¡Feliz de ayudar! Haga clic en la marca de arriba para mostrar que he respondido a su pregunta. - Alasdair

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.