Tengo un choiceField
para crear un campo de selección con algunas opciones. Algo como esto:Uso del campo de elección dinámico en Django
forms.py
class NewForm(forms.Form):
title = forms.CharField(max_length=69)
parent = forms.ChoiceField(choices = CHOICE)
Pero yo quiero ser capaz de crear las opciones sin tener una tupla predefinida (que es requerido 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 la de rellenar previamente la instancia de NewForm
a través de:
views.py
form = NewForm(initial={'choices': my_actual_choices})
pero tengo que añadir una OPCIÓN ficticia para crear no parece NewForm y my_actual_choices a trabajar 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.
Sí, eso funciona. Gracias –
'super()' debe ser lo primero. – Surya
Estaba confundido cuando vi 'super()' antes del constructor, pero cuando lo probé, recibí un error: el nombre 'self' no está definido. 'super()' tiene que estar en el constructor. Mirando el historial de edición, creo que eso es lo que Surya quiso decir, ya que 'super()' era originalmente la última línea del constructor. – user2233706