es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para restringir las opciones del menú desplegable según el tipo de usuario dentro del mismo formulario, puedes utilizar la lógica condicional en el archivo forms.py. Primero, debes determinar el tipo de usuario utilizando el objeto request y luego, en función del tipo de usuario, puedes filtrar las opciones para la lista desplegable.

    Aquí tienes un ejemplo de fragmento de código:

    class EForm(forms.ModelForm):
        def __init__(self, *args, **kwargs):
            user = kwargs.pop('user')
            super(EForm, self).__init__(*args, **kwargs)
            if user.is_superuser:
                self.fields['t'].choices = [('1', 'Opción 1'), ('2', 'Opción 2')]
            elif user.is_staff:
                self.fields['t'].choices = [('3', 'Opción 3'), ('4', 'Opción 4')]
            else:
                self.fields['t'].choices = [('5', 'Opción 5'), ('6', 'Opción 6')]
    
        class Meta:
            model = Modelo
            fields = ('t', 's', 'q')
    

    En el código anterior, se sobrescribe el método __init__ para recibir el parámetro user. Luego, en función del tipo de usuario, puedes cambiar las opciones para el campo t utilizando el atributo .choices.

    Ten en cuenta que este enfoque asume que estás pasando el objeto request.user a la instancia del formulario cuando lo creas. Por ejemplo, al crear una nueva instancia de formulario en una vista de Django, puedes pasar el objeto request.user de la siguiente manera:

    mi_formulario = EForm(request.POST or None, user=request.user)
    

Comments are closed.