Как очистить сразу несколько файлов в поле 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
Вернуться на верх