我真的发现 django 表单集令人困惑。
我对以下我不太了解的概念特别有疑问:
表单集足够聪明,可以忽略未更改的额外表单。
谈论代码试图太聪明。这到底是什么意思?为什么我什至想要那个?
然后,试图理解之前的概念,我看到了人们
在所需的表单集中制作表单。
这是另一个我无法理解的概念。什么是表单集中的必填表单,为什么我必须制作必填表单?再次没有记录的东西。
然后谈到我的实际问题,其他人似乎也遇到过,但他们无法真正解释为什么他们以他们修复它的方式修复它。
为什么在下面的示例中,表单集是有效的,而具有相同输入的单个表单将是无效的?
import django
class MyForm(django.forms.Form):
start = django.forms.DateField()
end = django.forms.DateField()
data = {
'form-TOTAL_FORMS': '1',
'form-MAX_NUM_FORMS': '',
'form-INITIAL_FORMS': '0',
'form-0-start': '',
'form-0-end': '',
}
MyFormSet = formset_factory(MyForm)
formset = MyFormSet(data)
#fee_forms[0].empty_permitted = False
print formset.is_valid()
# --- returns True ---
print formset.errors
f = MyForm({'start': '', 'end': ''})
print f.is_valid()
# --- returns False ---
print f.errors
将 empty_permitted 设置为 False 似乎给了我预期的结果(这是由于缺少“开始”和“结束”而导致表单集无效)。这是另一个未记录的功能...
有人愿意花点时间解释吗?
谢谢