Изображения сохраняются в папку None

У меня есть модель Book с полем image, в которое сохраняется обложка книги. В качестве параметра upload_to у этого поля я указал функцию image_directory_path, которая создает динамический путь к обложке по следующему образцу: media/catalog/book_covers/book_{id книги} и сохраняет обложку по этому пути.

При добавлении книги через стандартную админ-панель Django все работает как задумано, однако, если добавлять книгу через форму, то обложки почему-то добавляются в media/catalog/book_covers/book_None.

Почему так получается и что с этим делать?

Код функции image_directory_path:

def image_directory_path(instance, filename):
    return f'catalog/book_covers/book_{instance.id}/{filename}'

Код модели Book:

class Book(models.Model):
    image = models.ImageField(upload_to=image_directory_path,
                              default='catalog/book_covers/default_image.png',
                              verbose_name='Обложка')

forms.py:

class AddBookForm(forms.ModelForm):
    class Meta:
        model = Book
        fields = ['image']

views.py:

class BookCreateView(CreateView):
    model = Book
    form_class = AddBookForm
    template_name = 'catalog/add_book.html'
    extra_context = {'page_title': 'Добавление книги'}

    def get_success_url(self):
        return self.object.get_absolute_url()

add_book.html:

<form action="{% url 'add_book' %}" method="post" enctype="multipart/form-data">
    {% csrf_token %}

    {% for f in form %}
        <label for="{{ f.id_for_label }}">{{ f.label }}</label>
        <p>{{ f }}</p>
    {% endfor %}

    <button type="submit">Подтвердить</button>
</form>
Вернуться на верх