Корректное заполнение поля FileInput (ModeForm, Django)

Разрабатываю тренировочное приложение-библиотеку фильмов, и застряла на моменте добавления нового фильма в БД.

Вот сама модель фильма:

class Film(models.Model):
    name = models.CharField(unique=True, max_length=100)
    year = models.IntegerField(null=True, default=None)
    duration = models.IntegerField()
    desc = models.TextField(max_length=300)
    slug = models.SlugField(unique=True, null=True, default=None)

    actors = models.ManyToManyField(Actor)
    ganres = models.ManyToManyField(Ganre)

    poster = models.FileField(upload_to='posters/', null=True, default=None)
    file = models.FileField(upload_to='films/', null=True, default=None)

    def __str__(self):
        return self.name

Вот форма для добавления:

class FilmsForm(ModelForm):
    class Meta:
        model = models.Film
        fields = ['name', 'slug', 'year', 'ganres', 'actors', 'desc', 'poster', 'file']

        widgets = {
            'name': TextInput(attrs={
                'class': 'form-control',
                'placeholder': 'Название',
                'id': 'film_name',
                'label': 'Название фильма'
            }),
            'slug': TextInput(attrs={
                'class': 'form-control',
                'placeholder': 'SLUG',
                'id': 'film_slug'
            }),
            'year': NumberInput(attrs={
                'class': 'form-control',
                'placeholder': 'Год',
                'id': 'film_year'
            }),
            'ganres': SelectMultiple(attrs={
                'class': 'form-control',
                'placeholder': 'Жанры',
                'id': 'film_ganres'
            }),
                'actors': SelectMultiple(attrs={
                'class': 'form-control',
                'placeholder': 'Актеры',
                'id': 'film_actors'
            }),
            'desc': Textarea(attrs={
                'class': 'form-control',
                'placeholder': 'Описание',
                'cols': 30,
                'rows': 10,
                'id': 'film_description'
            }),
            'poster': FileInput(),
            'file': FileInput()
        }

Вот соответствующий этой форме шаблон:

 <form class="cu_film_form" id="cu_film_form" method="post">
        {% csrf_token %}

        <div class="field_container">
            <label>НАЗВАНИЕ</label>
            {{ form.name }}
        </div>

        <div class="field_container">
            <label>SLUG</label>
            {{form.slug}}
        </div>

        <div class="field_container">
            <label>ГОД</label>
            {{form.year}}
        </div>

        <div class="field_container">
            <label>ЖАНРЫ</label>
            {{form.ganres}}
        </div>

        <div class="field_container">
            <label>АКТЕРЫ</label>
            {{form.actors}}
        </div>

        <div class="field_container">
            <label>ОПИСАНИЕ</label>
            {{form.desc}}
        </div>


        <div class="field_container">
            <label>Загрузить постер{{ form.poster }}</label>
            <label>Загрузить файл{{ form.file }}</label>
        </div>
        <span>{{status}}</span>


        <div class="cu_form_actions">
            <button id="save_film_changes" name="save_film_changes" type="submit"></button>
            <button id="discard_film_changes" name="discard_film_changes" type="reset"></button>
        </div>

    </form>

И вот view для самого добавления:

def film_creation(request):
form = FilmsForm()
status = ''
if request.method == 'POST':

    for name in request.POST:
        print("{}: {}".format(name, request.POST.getlist(name)))
    print()

    form = FilmsForm(request.POST)
    if form.is_valid():
        film = form.save(commit=False)
        print('form saved!')

        file = form.cleaned_data['file']
        print('file getted!')
        frames = file.get(cv2.CAP_PROP_FRAME_COUNT)
        print('frames counted')
        fps = file.get(cv2.CAP_PROP_FPS)
        print('fps counted')
        film.duration = (round(frames / fps))//60
        print('duration counted')

        checked_ganres = (ganre for ganre in Ganre.objects.all() if ganre.id in request.POST.getlist('ganres'))
        print(checked_ganres)

        film.save()

        print(film)

        status = 'OK'
    else:
        for field, errors in form.errors.items():
            for error in errors:
                status += field + ": " + str(error)

context_dict = {
    'ganres': Ganre.objects.all(),
    'actors': Actor.objects.all(),
    'form': form,
    'status': status
}
return render(request, 'film_catalog/create_update_film.html', context=context_dict)

Проблема вот в чем: форма не проходит валидацию. В коде view видно, что я вывожу список полей с проблемами, и получаю следующую картину:

введите сюда описание изображения

Если я правильно понимаю, то программа хочет, что бы поля poster и file были заполнены. Но, я их точно выбираю (в коде view специально цикл ввела до валидации формы, что бы проверить, что данные были переданы): введите сюда описание изображения

Подскажите пожалуйста, как правильно заполнить форму с учетом полей типа FileInput?

Вернуться на верх