我一直在尋找答案一段時間,但我真的不知道如何發生這種情況。我試圖製作一個接收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