2012-09-27 60 views
3

我無法完成這項工作。我有一個有5個額外形式的formset。這5種表格有一個非必需但預填的欄位(要求)。提交時,Formset總是會引發錯誤,這是正常的,因爲它將所有表單視爲has_changed。我希望能夠忽略部分填充但強制字段爲空的表單。Django formset:刪除無效表單

任何幫助,非常感謝。

謝謝。

+0

這個驗證問題不會上升,如果你使用的初始設置的值屬性。你能分享一些代碼嗎? – karthikr

+0

@karthikr代碼非常通用,但預填充值實際上是使用javascript填充的。第一行中字段的值被複制到「模糊」上的所有行。如果你仍然需要代碼,我很樂意分享,但它不會真的有幫助。 – Nav

回答

2

而不是通過打電話的形式formset.is_valid()循環和驗證各種形式,只有當它滿足你有特定的要求,即:

for form in formset.forms: 
    if (form.data['required_field']): 
      form.is_valid() 
+0

不幸的是,當使用這種方法進行更新時,我將無法刪除標記爲要刪除的表單。我稍後要調用formset.save()來刪除標記爲要刪除的表單,並調用formset.save()會引發錯誤。 – Nav

+0

好點 - 沒有想到這一點。但在這種情況下,您必須處理保存個別表單並將其刪除(我認爲您只需檢查是否爲符合要求的每個表單選擇了DELETE字段。 – bmihelac

+0

謝謝@bmigelac,我想這是一種方法這是我做的:http://pastebin.com/5gxfcq9i – Nav