我在验证 forms.ChoiceField 时遇到问题。我有两个表/模型
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 选择字段的选项。
但是,当我想验证此表单时,它失败了。我正进入(状态:
表单错误
{'shopping_centre_id': [u'选择一个有效的选项。1 不是可用的选项之一。']}
尽管 1 是有效的购物中心 ID,但它是从数据库中选择的。
我有另一个 MultipleChoiceField 是相同的形式,并且工作正常。两者之间的唯一区别是 MultipleChoiceField 是使用标准 Django 生成的,而 ChoiceField 是使用 javascript (ajax + django) 创建的。
现在,我通过定义自己的 clean 方法找到了一种解决方法,在该方法中,我从 self._errors 中删除了错误并将 shopping_centre_id 值添加到cleaned_data。
有谁知道什么可能导致验证错误?