Django save image form.ImageField
пытаюсь сохранить изображение из формы в БД, но в БД поле пустое, через админку всё сохраняет
class BookFormView(FormView):
form_class = BookForm
template_name = 'books/book_form.html'
success_url = '/books/book_form'
def form_valid(self, form):
book_object = Book.objects.create(
book_name=form.cleaned_data['book_name'],
description=form.cleaned_data['description'],
id_publishing_house=form.cleaned_data['id_publishing_house'],
date_creation=form.cleaned_data['date_creation'],
book_img=form.cleaned_data['book_img']
)
author = form.cleaned_data['authors']
book_object.author.add(*author)
book_object.save()
return super(BookFormView, self).form_valid(form)
forms
class BookForm(forms.Form):
author_query = Author.objects.all()
author_array = (
[author.id, author] for author in author_query
)
book_name = forms.CharField(label='Название книги', min_length=1, max_length=50)
authors = forms.MultipleChoiceField(
widget=forms.CheckboxSelectMultiple(),
choices=author_array,
label='Выберите автора(ов)'
)
description = forms.CharField(label='Описание книги', widget=forms.Textarea(attrs={'rows': 5, 'cols': 40}))
id_publishing_house = forms.ModelChoiceField(label='Издательство', queryset=PublishingHouse.objects.all())
date_creation = forms.DateField(label='Дата написания книги')
book_img = forms.ImageField(label='Ссылка на изображение', required=False)
class Meta:
model = Book
field = ("book_img",)
model
class Book(models.Model):
book_name = models.CharField(max_length=100, verbose_name='Название книги')
author = models.ManyToManyField('Author', related_name='books', verbose_name='Авторы')
description = models.TextField(verbose_name='Описание книги', null=True, blank=True)
id_publishing_house = models.ForeignKey(
'PublishingHouse',
on_delete=models.CASCADE,
related_name='publishinghouse_books',
verbose_name='ID издательство',
null=True,
blank=True
)
date_creation = models.DateField(verbose_name='Дата написания книги', null=True, blank=True)
date_add = models.DateTimeField(auto_now_add=True, verbose_name='Дата добавления')
is_deleted = models.BooleanField(default=False, verbose_name='Удалить')
book_img = models.ImageField(upload_to='media/%Y/%m/%d',
verbose_name='Ссылка на изображение', blank=True, null=True)```
По идее нужно передать загруженные файлы в форму: ProfileForm(request.POST, request.FILES, instance=request.user.profile)