画像をアップロードするためのフォームがあります。
form の特定のフィールド属性をクリーニングするための Django の標準に従う場合、これは私の clean メソッドが通常どのようになるかを示します。
class UploadImagesForm(forms.Form):
image = forms.FileField()
def clean_image(self):
file = self.cleaned_data['image']
if file:
if file._size > 15*1024*1024:
raise forms.ValidationError("Image file is too large ( > 15mb ).")
return file
else:
raise forms.ValidationError("Could not read the uploaded file.")
ただし、同じウィジェットを使用して複数の画像を一度にアップロードできるフォームを使用しています (つまり、ユーザーは Shift キーを押しながらクリックして、ファイル ブラウザーで複数のファイルを選択できます)。したがって、ビューまたはハンドラーでファイルにアクセスする必要があるときはいつでもrequest.FILES.getlist('images')
、for ループのようなものを使用します。このフィールドのきれいなメソッドをどうやって書くのですか?? 道に迷いました。
これが私のフォームの外観です。
class UploadImagesForm(forms.Form):
images = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': 'multiple'}))
上記のコードの最初のブロックに示されているように、フィールドの clean メソッドで、送信された各ファイルのファイル サイズを確認したいと思います。