Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在save()方法之后修改peewee自定义字段?_Python_Python 3.x_Peewee - Fatal编程技术网

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的。它涉及到自定义描述符的使用。