我在验证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