我有一张表格,只有在清理后才需要验证.
当你跑form.is_valid()
米的时候会发生什么?表单是否已清理,然后已清理版本的表单是否已验证?
我现在得到的行为是,如果我的字段在清理之前没有通过验证,即使清理可以让它通过,is_valid()
也会返回False
.
我做错什么了吗?
代码:
# View
class ContactForm(forms.Form):
message = forms.CharField(widget=forms.Textarea, max_length=5)
def clean_message(self):
message = self.cleaned_data['message']
return message.replace('a', '') # remove all "a"s from message
def contact(request):
if request.method == 'POST':
if form.is_valid():
return HttpResponseRedirect('/contact/on_success/')
else:
return HttpResponseRedirect('/contact/on_failure/')
如果消息少于5个字符NOT(包括a
),我希望form.is_valid()
返回True
!
有可能在to_python()
之后但在run_validators()
之前跑clean_<fieldname>()
吗?还是我应该用其他方式来做?