Ошибка при создании записи в БД. Django Forms. ImageField

Происходит ошибка: Обязательное поле.

Views.py:

class CreateFile(DataMixin, CreateView):
    form_class = AddFileForm
    template_name = 'filehost/add_file.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        c_def = self.get_user_context(title='Добавление файла')
        return JoinDicts(context, c_def)

Urls.py:

from django.urls import path, re_path
from django.views.decorators.cache import cache_page

from .views import *

urlpatterns = [
    path('', cache_page(0)(FilesHostHome.as_view()), name='filehost'),
    path('c/<slug:slug>/', cache_page(0)(ShowFilesCategory.as_view()), name='filehost-category'),
    path('f/<slug:slug>/', cache_page(0)(ShowFile.as_view()), name='filehosted'),
    path('l/', cache_page(0)(CreateFile.as_view()), name='file-upload'),
    path('link/<slug:slug>/', DownloadFile, name='file-download'),
]

Models.py:

from django.db import models
from django.urls import reverse


class File(models.Model):
    title = models.CharField(max_length=255, verbose_name='Заголовок')
    slug = models.SlugField(max_length=127, unique=True, db_index=True, verbose_name='URL')
    description = models.TextField(blank=True, verbose_name='Содержание')
    image = models.ImageField(upload_to="photos/%Y/%m/%d/", default='fileshosted/default/image.jpg', verbose_name='Фотография')
    file = models.FileField(
        upload_to='fileshosted/%Y/%m/%d/',
        # validators=[FileExtensionValidator(allowed_extensions=['mp4'])],
        verbose_name='Файл'
    )
    time_create = models.DateTimeField(auto_now_add=True, verbose_name='Время создания')
    time_update = models.DateTimeField(auto_now=True, verbose_name='Время последнего изменения')
    is_published = models.BooleanField(default=True, verbose_name='Опубликовано')
    cat = models.ForeignKey('FileCategory', on_delete=models.PROTECT, default=1, verbose_name='Категория')

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('filehosted', kwargs={'slug': self.slug})

    class Meta:
        verbose_name = 'Файл на хостинг'
        verbose_name_plural = 'Файлы на хостинг'
        ordering = ['-time_create', 'title']


class FileCategory(models.Model):
    name = models.CharField(max_length=127, null=False, db_index=True, verbose_name="Название")
    slug = models.SlugField(max_length=127, unique=True, db_index=True, verbose_name='URL')

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('filehost-category', kwargs={'slug': self.slug})

    class Meta:
        verbose_name = 'Категория'
        verbose_name_plural = 'Категории'
        ordering = ['id']

Forms.py:

from django import forms
from .models import *
from women.textedit import slugify_ru


class AddFileForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

    class Meta:
        model = File
        fields = ['title', 'description', 'image', 'file', 'cat']
        widgets = {
            'title': forms.TextInput(attrs={'class': 'form-input'}),
            'description': forms.Textarea(attrs={'cols': '60', 'rows': 10}),
        }

    def save(self, *args, **kwargs):
        self.fields['slug'] = slugify_ru(self.fields['title'])
        self.fields['is_published'] = True
        super(AddFileForm, self).save(*args, **kwargs)

Создание файла HTML:

{% extends 'filehost/base.html' %}

{% block content %}
<h1>{{title}}</h1>
<form action="{% url 'file-upload' %}" method="post">
    {% csrf_token %}

    <div class="form-error">{{ form.non_field_errors }}</div>

    {% for f in form %}
    <div class="form-error">{{f.errors}}</div>
    <p><label class="form-label" for="{{ f.id_for_label }}">{{f.label}}</label>{{f}}</p>
    {% endfor %}

    <button type="submit">Добавить</button>

</form>
{% endblock %}

При нажатии на кнопку Добавить вылезает ошибка: Обязательное поле, даже если изображение выбрано. Как исправить? И как сделать так, чтобы когда изображение не указывалось оно бралось из папки по умолчанию?

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