Например, у меня есть модель:
class ExampleModel(Base):
name = CharField(max_length=255)
image = ImageField(size=(200, 200))
class Meta:
table_name = 'example'
ImageField
- это мое настраиваемое поле:
class ImageField(TextField):
thumb_size: Tuple[int, int] = None
def __init__(self, size: Tuple[int, int] = None, *args, **kwargs):
super().__init__(*args, **kwargs)
self.thumb_size = size
def db_value(self, value):
# ...some file upload logic
return json.dumps({
'original': original_path,
'thumbnail': thumbnail_path
})
def python_value(self, value):
return json.loads(value)
Когда я сохраняю экземпляр, все хорошо (body.image
имееттип starlette.datastructures.UploadFile
):
example: ExampleModel = dict_to_model(ExampleModel, body)
example.save()
Но, если я проверю тип example.image
после сохранения, он все равно будет иметь тип starlette.datastructures.UploadFile
. Как я могу изменить поле изображения после сохранения, или может быть после запуска db_value()
метод?