是什么触发了Django formset的表单验证?

时间:2010-07-26 23:05:02

标签: django django-forms

我有一个基于ModelForm的from并使用formset_factory来创建基于两个词典的formset。还有一个额外的表格。

在我看来,我使用formset JS插件,我用数据删除了两个表单。当我发布剩余的空额外表格时,由于必填字段,它无法通过验证。

我不明白为什么要验证该表格。其changed_data列表为空。它返回时返回empty_permitted = False(我想知道为什么会这样),但即使我在调试器中将其更改为True,它也会被验证。

那么什么是触发验证以及如何修改它?

我也很想知道存储初始数据等数据的位置。在我看来,我没有看到它吗?

1 个答案:

答案 0 :(得分:0)

模板管理表单有一个名为INITIAL_FORMS的计数器。用于添加和删除表单的formset插件不区分最初填充的表单和它添加的表单。删除表单时,如果最初填充表单,则应递减INITIAL_FORMS。

这可以通过包含模板变量来实现,该模板变量标记最初填充的表单。在formset插件的remove函数中,如果正在删除其中一个标记表单,则递减INITIAL_FORMS。