我一直在寻找答案一段时间,但我真的不知道如何发生这种情况。我试图制作一个接收2个文件的表单,并且我重写了clean()方法来检查名称和扩展名是否正确。这是我有:Django自定义forms.clean()方法不工作
def clean(self):
cleaned_data = super(UploadForm, self).clean()
obs_filename = cleaned_data.get('obs').name.split('.')
nav_filename = cleaned_data.get('nav').name.split('.')
if obs_filename[0] != nav_filename[0] or [obs_filename[1], nav_filename[1]] != ['obs', 'nav']:
raise forms.ValidationError('Filenames do not match.')
if os.path.isfile(PROJECT_ROOT + '/data/unprocessed/' + '.'.join(obs_filename)) and os.path.isfile(PROJECT_ROOT + '/data/unprocessed/' + '.'.join(nav_filename)):
raise forms.ValidationError('Files already exist.')
return cleaned_data
的问题是,当我用这个,输入校验不起作用(表单提交不选择任何文件)。当我删除这段代码时,它工作正常。 对super(UploadForm, self).clean()
的调用与自定义clean()函数的django文档中的调用相同。我使用的是django 1.4。有什么想法吗?
谢谢!
代码看起来不错。你的clean()方法是否被执行?你可以在第一行“断言0”。 – guettli 2012-07-06 09:13:56
刚刚检查,它确实执行 – 2012-07-06 09:53:00