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

利用

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 回答
1

如果数据直接来自数据库,我看不出怎么会有任何验证错误。然而,这样做很容易——而不是像initial,传递一样传递数据data,就像它来自 POST 一样。

formset = ArticleFormSet(data=my_data)

这会将表单设置为绑定,并触发验证。

于 2009-07-29T21:51:03.470 回答