1

次に例を示します。

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()

しかし、それは役に立ちませんでした。

4

2 に答える 2

1

データがDBから直接取得されたばかりの場合、検証エラーがどのように発生するかわかりません。ただし、これを行うのは非常に簡単です。POSTから取得したかのように、データを渡すのではなく、渡しinitial,ますdata

formset = ArticleFormSet(data=my_data)

これにより、フォームがバインド済みとして設定され、検証がトリガーされます。

于 2009-07-29T21:51:03.470 に答える
1

使用する

formset = ArticleFormSet(data=my_data)

非常に重要です。my_data はこの形式の dict である必要があります

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',
    }

form-TOTAL_FORMS と form-INITIAL_FORMS は必須です!!!

于 2012-02-22T10:59:05.567 に答える