我的表單上有一個選擇列表下拉框,其中填充了來自模型(導演)的數據。這個下拉列表的值不需要保存;它實際上只用於動態觸發表單的另一個元素(名爲Films的下拉列表)。因此,當用戶選擇一個導演時,它會動態地填充與該導演相關的電影的第二個列表。覆蓋一個Django表單元素上的數據驗證
第一份名單的第一項內容是「全部董事」。因爲選擇了所有導演,所以不用篩選電影列表,而是讓所有影片顯示在第二個列表中。
如果用戶選擇一個特定的導演,然後選擇電影,表單提交正確。問題是,如果用戶選擇所有導演,然後選擇一部電影,當提交表格時,它告訴我,我選擇導演是無效的,因爲它不是可用的選擇之一。在這種情況下,可用的選擇(我假設)是數據庫中現有的Director.objects之一。但因爲我不在乎導演,所以我不需要這個條目是有效的。我只需要電影是有效的。
我正在使用ModelForm。 如何禁用或覆蓋Director表單字段上的數據驗證,以便它忽略該字段生成的錯誤?
`super(MyForm,self).clean()`它會允許默認的基於模型的驗證仍然活動? – andi 2014-03-27 18:14:48
是的。在到達表單的乾淨方法之前,字段驗證器已經運行。您可以檢查它們是否在表單的「錯誤」屬性中生成了一些錯誤。 (Django 1.8) – 2016-03-31 09:47:22