【发布时间】:2017-01-22 03:56:09
【问题描述】:
https://docs.djangoproject.com/en/1.10/ref/forms/validation/
声明run_validators() 在表单子类的clean() 之前运行。
我的模型看起来像:
def validate_ascii(value):
try:
value.encode('ascii')
except UnicodeEncodeError:
raise ValidationError("Contains non-ascii characters")
class Keyword(models.Model):
name = models.CharField(max_length=50, unique=True, validators=[validate_ascii])
在我表单的clean() 方法中
class KeywordAdminForm(ModelForm):
class Meta:
model = Keyword
def clean(self):
import pdb; pdb.set_trace()
cleaned_data = super(KeywordAdminForm, self).clean()
import pdb; pdb.set_trace()
return super(KeywordAdminForm, self).clean()
之后,表单中每个字段的验证器都会运行。这会导致问题,因为我的 clean 方法假定每个字段都先运行 validator 并崩溃。
为什么我的表单的clean() 方法在现场验证器之前运行?
【问题讨论】:
标签: django forms validation django-forms django-validation