2010-07-26 42 views
0

我有一个基于ModelForm并使用formset_factory基于两个字典创建一个formset。还有一个额外的形式。什么触发器形式验证Django formset?

在我看来,我使用formset JS插件,并删除两个表单与数据。当我发布剩余的空白额外表单时,由于必填字段而导致验证失败。

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

那么什么是触发验证,我该如何修改它?

我也有兴趣知道像初始数据存储在哪里。在我看来,我没有看到它吗?

回答

0

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

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