2009-07-29 3 views
1

は例です:Djangoフォームセットで初期データの検証を行うことはできますか?ここ

from django import forms 
class ArticleForm(forms.Form): 
    title = forms.CharField() 
    pub_date = forms.DateField() 

from django.forms.formsets import formset_factory 
ArticleFormSet = formset_factory(ArticleForm) 

formset = ArticleFormSet(initial=my_data) 

だから、例の「my_dataは、」私はそれが最初に任意のユーザ入力の前にロードされたときに表示するように形成するデータです。しかし、データを編集する前に既存のエラーがあるかどうかをユーザーが確認できるように、フォームの検証をデータで実行したいと思います。

私はこれやってみました:

formset = ArticleFormSet(initial=my_data) 
formset.is_valid() 

をしかし、それは助けにはなりませんでした。

答えて

1

データがDBからまっすぐに出てきた場合、どのような検証エラーが発生するかわかりません。しかし、これは非常に簡単です。initial,としてデータを渡すのではなく、POSTのようにdataというように渡します。

formset = ArticleFormSet(data=my_data) 

これは、フォームをバウンドとして設定し、検証をトリガーします。

+2

ユーザーが投稿したときのデータは、フォーム番号ごとに{@ form-386-pubdate: '2009-10-31 00:00:00.00'、 'form -153-title ':' 135 '、' form-123-title ':' 123 '、... formsetsは通常のフォームと少し異なります。 – Greg

0

使用

formset = ArticleFormSet(data=my_data)

非常に重要な、my_dataは

data = { 
    'form-TOTAL_FORMS': u'2', 
    'form-INITIAL_FORMS': u'2', 
    'form-MAX_NUM_FORMS': u'', 
    'form-0-title': u'Test', 
    'form-0-pub_date': u'1904-06-16', 
    'form-1-title': u'Test', 
    } 

フォームTOTAL_FORMSとフォームINITIAL_FORMSは必須です。この形式で辞書でなければなりません!

関連する問題