しばらく答えを探していましたが、これがどのように起こるのか本当にわかりません。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
問題は、これを使用すると、入力のチェックが機能しないことです (フォームはファイルを選択せずに送信されます)。このコードを削除すると、正常に動作します。への呼び出しsuper(UploadForm, self).clean()
は、カスタム clean() 関数の django ドキュメントと同じです。私はジャンゴ1.4を使用しています。何かご意見は?
ありがとう!