我一直在寻找答案,但我真的不知道这是怎么回事。我正在尝试制作一个接收 2 个文件的表单,并且我正在覆盖 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
问题是,当我使用它时,输入检查不起作用(表单提交时未选择任何文件)。当我删除此代码时,它工作正常。对自定义 clean() 函数的调用super(UploadForm, self).clean()
与 django 文档中的调用相同。我正在使用 django 1.4。有什么想法吗?
谢谢!