Задача простая: админ загружает через форму много изображений, который могут быть невероятно большими. Мне нужно "на лету" уменьшить размер, отконвертировать в JPEG и изменить качество чтобы картинка не занимала много места. Перекопал много всего, в том числе англоязычного - ничего на Django 3 не работает.
from django.db import models
def Service_Block_Photo_Name(instance, filename):
return 'service_block/{0}.jpg'.format(instance.id)
class Service_Block_Photo(models.Model):
def save(self, *args, **kwargs):
if self.photo_number is None:
print(self.service_block_id)
try:
current_max_block = Service_Block_Photo.objects.filter(service_block_id=self.service_block_id).order_by("-photo_number")[0]
current_max_number = int(current_max_block.photo_number)+1
except:
current_max_number = 1
self.photo_number = current_max_number
###
### тут видимо нужен блок изменяющий изображение BLOCK_IMAGE
###
super(Service_Block_Photo, self).save(*args, **kwargs)
service_block = models.ForeignKey('Service_Block', on_delete=models.PROTECT)
photo_number = models.SmallIntegerField(verbose_name="Номер", blank=True)
name_short = models.CharField(max_length=100, verbose_name="Короткое название")
name_full = models.CharField(max_length=300, verbose_name="Длинное название", blank=True)
block_image = models.ImageField(upload_to=Service_Block_Photo_Name, null=True, blank=True, verbose_name="Изображение")