2013-07-17 33 views
2

我有這樣簡單的觀點:django的formset.is_valid()是否工作?

import datetime 
from django import forms 
from django.forms.formsets import formset_factory 
from django.http import HttpResponse 
from django.shortcuts import redirect, render, render_to_response 
from django.views.generic.detail import DetailView 

from form_utils.forms import BetterForm 

from fb_app import models as fb_model 
from learn_forms import models as lf_model 

class ArticleForm(forms.Form): 
    title = forms.CharField(required=True) 
    #pub_date = forms.DateField() 


def formset(request): 
    print request.POST 
    ArticleFormSet = formset_factory(ArticleForm) # [1] 
    if request.method == 'POST': 
     formset = ArticleFormSet(request.POST) 
     print formset.is_valid() 
     if formset.is_valid(): 
      # do something with the formset.cleaned_data 
      pass 
    else: 
     formset = ArticleFormSet() 
     print formset.is_valid() 
    return render(request, 'formset.html', { 
     'formset': formset, 
    }) 

我點擊空標題字段和表單集驗證說,這是有效的(我預計大約需要值的消息)提交 但是,如果交換FORMSET通過這樣的形式:

ArticleFormSet = ArticleForm 

在一行標記: 「#[1]」 的形式示出了消息 '此字段是必需'(我期望)

HTML文件:

<form method="post" action="/lf/formset"> 
    {% csrf_token %} 
    <table> 
     {{ formset }} 
    </table> 
    <input type="submit" name="submit" > 
</form> 

怎麼了?

+0

*哪裏失敗?你究竟得到什麼錯誤?請注意,'else'子句中的'is_valid()'調用將失敗,因爲[unbound表單無效](https://docs.djangoproject.com/en/1.5/ref/forms/api/#behavior-的非結合-形式)。更新了 –

+0

,我期待有關所需標題的消息 – xliiv

回答

0

問題是你如何調用模板內的窗體。這應該是這樣的:

<form method="post" action="/lf/formset"> 
    <table> 
     {% csrf_token %} 
     {{ formset.as_p }} 
    </table> 
    <input type="submit" name="submit" > 
</form> 

你可以瞭解更多關於他們here