2011-05-31 6 views
5

Tengo un formulario como el siguiente:eliminar dinámicamente una opción de elección de una forma

RANGE_CHOICES = (
    ('last', 'Last Year'), 
    ('this', 'This Year'), 
    ('next', 'Next Year'), 
) 

class MonthlyTotalsForm(forms.Form): 
    range = forms.ChoiceField(choices=RANGE_CHOICES, initial='this') 

Está representada en la plantilla de esta manera:

{{ form.range }} 

En algunas situaciones que no quiero mostrar la opción 'Próximo año'. ¿Es posible eliminar esta opción en la vista donde se crea el formulario?

Respuesta

8
class MonthlyTotalsForm(forms.Form): 
    range = forms.ChoiceField(choices=RANGE_CHOICES, initial='this') 

    def __init__(self, *args, **kwargs): 
     no_next_year = kwargs.pop('no_next_year', False) 
     super(MonthlyTotalsForm, self).__init__(*args, **kwargs) 
     if no_next_year: 
      self.fields['range'].choices = RANGE_CHOICES[:-1] 

#views.py 
MonthlyTotalsForm(request.POST, no_next_year=True) 
+0

No dispongo de los privilegios de edición, pero le faltan dos puntos después de la definición del método. ¡Gracias por tu respuesta! – mikemaccana

+0

@nailer ¡Gracias! – DrTyrsa

Cuestiones relacionadas