2010-07-26 70 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。