Конструктивный подход к изучению Django — это важный шаг. В вашем случае, вы работаете с классом, отвечающим за изменение размера и конвертацию изображения. Вы хотите узнать, как передать высоту и ширину изображения в модель. Возможно, подскажете, как это сделать, учитывая возможность использования этого класса в других проектах с разными значениями?
Для передачи высоты и ширины изображения в атрибуты класса models.ImageField в Django, вы можете использовать параметры `height_field` и `width_field`. Например, если у вас есть модель, которая содержит поле для изображения, вы можете задать два дополнительных поля для хранения высоты и ширины изображения: ```python from django.db import models class MyModel(models.Model): image = models.ImageField(upload_to='images/') height = models.IntegerField(default=0) width = models.IntegerField(default=0) ``` Затем, вы можете использовать параметры `height_field` и `width_field` в поле `image`, чтобы указать, в какие поля сохранять высоту и ширину изображения: ```python class MyModel(models.Model): image = models.ImageField(upload_to='images/', height_field='height', width_field='width') height = models.IntegerField(default=0) width = models.IntegerField(default=0) ``` Теперь, при загрузке изображения в поле `image`, Django автоматически сохранит его высоту и ширину в соответствующие поля `height` и `width` модели. Этот подход позволяет легко использовать этот класс в других проектах, просто изменяя названия полей `height` и `width` при необходимости.
Если вы хотите использовать класс в других проектах то первое, это не надо жестко кодировать max_width и max_height
def save(self, name, content, save=True, max_width=200, max_height=200)
Передайте через поле модели и сохраните.
class WEBPThumbnail(models.ImageField): def __init__(self, *args, **kwargs): self.max_width = kwargs.pop('max_width', 200) self.max_height = kwargs.pop('max_height', 200) super().__init__(*args, **kwargs) def attr_class(self): return WEBPThumbnailImg def pre_save(self, model_instance, add): file = super().pre_save(model_instance, add) if file and not file._committed: file.max_width = self.max_width file.max_height = self.max_height return file
Теперь вы можете использовать эти параметры в classWEBPThumbnailImg(ImageFieldFile)
если ваши условияTrue
то сохраняете изображения с новыми парметрами.
Используйте в вашей модели.
class Category(models.Model)