2010-09-09 2 views
2

Я пытаюсь выбрать форму со списком месяцев, но я не могу заставить ее правильно опубликовать.Список месяцев в Django

форма:

class MonthForm(forms.Form): 
     months = [('January','January'), 
        ('February','February'), 
        ('March','March'), 
        ('April','April'), 
        ('May','May'), 
        ('June','June'), 
        ('July','July'), 
        ('August','August'), 
        ('September','September'), 
        ('October','October'), 
        ('November','November'), 
        ('December','December'),] 
     month = forms.ChoiceField(months) 

вид:

def table_view(request): 
    if request.method == 'POST': 
     month = MonthForm(request.POST).cleaned_data['month'] 
     print month 

Я получаю эту ошибку:

'MonthForm' object has no attribute 'cleaned_data' 

ответ

6

Атрибут cleaned_data присутствует только после того, как форма была подтверждена с is_valid().

Просто измените свой код

def table_view(request): 
    if request.method == 'POST': 
     form = MonthForm(request.POST) 
     if form.is_valid(): 
      print form.cleaned_data['month'] 

Внутренне, если будут обнаружены какие-либо ошибки, то атрибут cleaned_data будут удалены (см forms/forms.py вокруг линии 270), и, следовательно, не доступен:

if self._errors: 
    delattr(self, 'cleaned_data') 

См. Также: http://docs.djangoproject.com/en/dev/topics/forms/?from=olddocs#processing-the-data-from-a-form

+0

Интересно. Думаю, я действительно не думал о валидации для окна выбора. – JPC

Смежные вопросы