Django Плохой дескриптор файла при сохранении изображения увеличенного размера
Я новичок в Django и Python. Я пытаюсь изменить размер изображений при их сохранении. При попытке сохранить изображение я получаю следующую ошибку: OSError at /company_profile/add_logo/ [Errno 9] Bad file descriptor.
До сих пор я не смог решить эту проблему. Я знаю, что в коде могут быть и другие ошибки.
Модель:
from django.db import models
from PIL import Image
import PIL
from constrainedfilefield.fields import ConstrainedFileField
class CompanyNavbarLogo(models.Model):
date = models.DateTimeField(auto_now_add=True, null=True)
title = models.CharField(default='navbar logo', max_length=50)
image = ConstrainedFileField(
null=True,
blank=True,
upload_to='company_profile/logo',
content_types=['image/png', 'image/jpg', 'image/jpeg', 'image/gif'],
max_upload_size=2097152,
)
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
image = self.image
img = Image.open(self.image.path)
fixed_height = 50
height_percent = (fixed_height / (img.size[1]))
width_size = int((float(img.size[0]) * float(height_percent)))
if img.height > 50:
width_size = int((float(img.size[0]) * float(height_percent)))
image = img.resize((width_size, fixed_height), PIL.Image.NEAREST)
image.save(self.image)
def __str__(self):
return self.title
Вид:
from django.shortcuts import render
from .models import CompanyNavbarLogo
from django.views.generic.edit import CreateView
class CompanyLogoCreateView(CreateView):
model = CompanyNavbarLogo
template_name = 'company_accounts/add_logo.html'
fields = ['image']
def get_success_url(self):
return reverse('home')
Шаблон:
{% extends 'base.html' %}
{% load crispy_forms_tags %}
{% block content %}
<div class="section-container container">
<h1>Add logo</h1>
<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.media }}
{{ form|crispy }}
<input type="submit" value="save">
</form>
</div>
{% endblock content %}