Python 如何在save()方法之后修改peewee自定义字段?
例如,我有一个模型:Python 如何在save()方法之后修改peewee自定义字段?,python,python-3.x,peewee,Python,Python 3.x,Peewee,例如,我有一个模型: 类示例模型(基本): name=CharField(最大长度=255) 图像=图像字段(大小=(200200)) 类元: 表_name='示例' ImageField-这是我的自定义字段: 类图像字段(文本字段): 拇指大小:元组[int,int]=None def uu init uuu(self,size:Tuple[int,int]=None,*args,**kwargs): super() self.thumb\u size=大小 def db_值(自身,值):
类示例模型(基本):
name=CharField(最大长度=255)
图像=图像字段(大小=(200200))
类元:
表_name='示例'
ImageField
-这是我的自定义字段:
类图像字段(文本字段):
拇指大小:元组[int,int]=None
def uu init uuu(self,size:Tuple[int,int]=None,*args,**kwargs):
super()
self.thumb\u size=大小
def db_值(自身,值):
#…一些文件上传逻辑
返回json.dumps({
“原始”:原始路径,
“缩略图”:缩略图路径
})
def python_值(自身,值):
返回json.loads(值)
当我保存实例时,一切正常(body.image
有一个starlette.datastructures.UploadFile
类型):
ExampleModel=dict_to_model(ExampleModel,body)
save()示例
但是,如果我在保存后检查example.image
的类型,它仍然有starlette.datastructures.UploadFile
类型。如何在保存后修改图像字段,或者在运行db\u value()
方法后如何修改图像字段?在读取和写入数据库时分别使用python\u value()
和db\u value()
。除了将值从一种数据类型转换为另一种数据类型之外,它们不是执行任何魔术的地方,它们只是为来自数据库游标的值提供Pythonic数据类型
换句话说,你把你的魔法放错地方了。将它放在
save()
方法中,而不是字段类中。是的,但是save()方法也不适合在模型中写入字段级逻辑。这也违反了干燥的概念。请指导我。如何正确重写字段
实例的方法中的值?)请查看我是如何在peewee.py中实现BigBitField的。它涉及到自定义描述符的使用。