Как очистить сразу несколько файлов в поле FileField с несколькими вложениями?
Я хочу выдать ошибку валидации, если пользователь пытается загрузить более 1 видеофайла (разрешено загружать более 1 изображения).
Вот код для поля:
media = forms.FileField(
widget=forms.ClearableFileInput(attrs={"multiple": True}),
label="Add image/video",
required=False,
validators=[validate_file_size, validate_file_extension],
)
Я могу перебирать каждый файл по одному, используя валидатор на поле (проверяя расширение файла каждого файла), или используя функцию clean.
на вашей форме POST view
files=request.FILES.get('media')
for file in files:
if file.content_type.__contains__('image'):
photos += 1
elif file.content_type.__contains__('video'):
videos += 1
else:
photos=-1
break
if videos>1:
# throw more than one video error
if photos>5: # if you want to limit photos selection too
# throw more than five photos error
if photos==-1:
# throw invalid media error