form example django dynamic choicefield

form - choicefield django example



Usando Dynamic Choice Field en Django (1)

Tengo una choiceField para crear un campo de selección con algunas opciones. Algo como esto:

forms.py class NewForm(forms.Form): title = forms.CharField(max_length=69) parent = forms.ChoiceField(choices = CHOICE)

Pero quiero poder crear las opciones sin tener una tupla predefinida (que es requerida por ChoiceField ). Básicamente, necesito tener acceso a request.user para completar algunas etiquetas de opciones de acuerdo con cada usuario, pero no sé si hay alguna forma de usar la solicitud en las clases de formularios. Formulario.

Una alternativa sería NewForm la instancia de NewForm través de:

views.py form = NewForm(initial={''choices'': my_actual_choices})

pero tengo que agregar una CHOICE ficticia para crear NewForm y my_actual_choices no parece funcionar de todos modos.

Creo que una tercera forma de resolver esto es crear una subclase de ChoiceField y redefinir save() pero no estoy seguro de cómo hacerlo.


Puede poblarlos dinámicamente anulando el init , básicamente el código se verá así:

class NewForm(forms.Form): super(NewForm, self).__init__(*args, **kwargs) def __init__(self, choices, *args, **kwargs): super(NewForm, self).__init__(*args, **kwargs) self.fields["choices"] = forms.ChoiceField(choices=choices)

NewForm(my_actual_choices) o NewForm(my_actual_choices, request.POST, request.FILES) etc.