Конструктивный подход к изучению 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)