我在驗證forms.ChoiceField時遇到問題。我有兩個表格/模型Django表單驗證模型選擇
class City(models.Model):
...
name = models.CharField(max_length=64)
...
class ShoppingCenter(models.Model):
...
name = models.CharField(max_length=64)
city = models.ForeignKey(City)
人們可以在城市和購物中心註冊他們的活動。但因爲有很多城市和更多的購物中心,我想限制購物中心的選擇到選定的城市。我創建了一個帶CharField的城市名稱和一個空的ChoiceField。
用戶在CharField中使用ajax/jquery自動填充進入城市後,我使用ajax/jquery填充ShoppingCenter ChoiceField的值。
所有似乎工作。我輸入了一個有效的城市,並且JavaScript填充了ShoppingCenter選擇字段的選項。
但是,當我想驗證此表單失敗。我越來越:
form_errors
{ 'shopping_centre_id':[u'Select一個有效的選擇。 1不是可用選項之一']}
雖然1是有效的購物中心ID,但它是從數據庫中選擇的。
我有另一個MultipleChoiceField是相同的形式,工作正常。兩者之間的唯一區別是MultipleChoiceField是使用標準Django生成的,ChoiceField是使用javascript(ajax + django)創建的。
現在我已經找到了一個解決方法,定義了我自己的clean方法,在該方法中,我從self._errors中刪除錯誤並將shopping_centre_id值添加到cleaned_data。
有誰知道什麼可能會導致驗證錯誤?
使用ModelChoiceField購物中心是不可能的恐怕因爲這取決於用戶填寫的城市。所以我不知道城市,當我顯示錶單時,我無法顯示購物清單中心。 – Henri 2012-04-21 14:17:33