Saltar al contenido

Establecer el valor seleccionado en un formulario de Django.

Solución:

Intente establecer el valor inicial cuando cree una instancia del formulario:

form = MyForm(initial={'max_number': '3'})

Esto no toca la pregunta inmediata en cuestión, pero esta Q / A surge para búsquedas relacionadas con tratar de asignar el valor seleccionado a un ChoiceField.

Si ya has llamado super().__init__ en su clase de formulario, debe actualizar el form.initial diccionario, no el field.initial propiedad. Si tú estudias form.initial (p.ej print self.initial después de la llamada a super().__init__), contendrá valores para todos los campos. Tener un valor de None en ese dict anulará el field.initial valor.

p.ej

class MyForm(forms.Form):
    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        # assign a (computed, I assume) default value to the choice field
        self.initial['choices_field_name'] = 'default value'
        # you should NOT do this:
        self.fields['choices_field_name'].initial="default value"

También puede hacer lo siguiente. en tu formulario class def:

max_number = forms.ChoiceField(widget = forms.Select(), 
                 choices = ([('1','1'), ('2','2'),('3','3'), ]), initial="3", required = True,)

luego, al llamar al formulario en su vista, puede establecer dinámicamente tanto las opciones iniciales como la lista de opciones.

yourFormInstance = YourFormClass()

yourFormInstance.fields['max_number'].choices = [(1,1),(2,2),(3,3)]
yourFormInstance.fields['max_number'].initial = [1]

Nota: los valores iniciales deben ser una lista y las opciones deben ser 2 tuplas, en mi ejemplo anterior tengo una lista de 2 tuplas. Espero que esto ayude.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *