Изображения сохраняются в папку 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>