【发布时间】:2014-08-07 01:54:09
【问题描述】:
当表单类只有一个字段时,Formset is_valid 返回“虽然字段为空,但为真。
我使用“python manage.py shell”制作了这个例子。
如您所见,当“ArticleForm”类只有标题字段时,表单集的 is_valid 函数返回“True”。
由于这个问题,我看到有人使用 has_changed 函数。
但我认为这不是解决这个问题的好方法。
from django import forms
from django.forms.formsets import formset_factory
class ArticleForm(forms.Form):
title = forms.CharField()
ArticleFormSet = formset_factory(ArticleForm)
data = {
'form-TOTAL_FORMS': '2',
'form-INITIAL_FORMS': '0',
'form-MAX_NUM_FORMS': '',
'form-0-title': 'Test',
'form-1-title': '',
}
formset = ArticleFormSet(data)
formset.is_valid()
#True - I think it has to be "False" because the "form-1-title' is empty
formset.errors
#[{}, {}]
class ArticleForm(forms.Form):
title = forms.CharField()
pub_date = forms.DateField()
ArticleFormSet = formset_factory(ArticleForm)
data = {
'form-TOTAL_FORMS': '2',
'form-INITIAL_FORMS': '0',
'form-MAX_NUM_FORMS': '',
'form-0-title': 'Test',
'form-0-pub_date': '1904-06-16',
'form-1-title': '',
'form-1-pub_date': '1904-06-16',
}
formset = ArticleFormSet(data)
formset.is_valid()
#False - It's working. I think the reason is the pub_date field.
formset.errors
#[{}, {'title': [u'This field is required.']}]
【问题讨论】: