Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.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/2/django/20.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 钩住django字段分配_Python_Django_Orm_Django Forms - Fatal编程技术网

Python 钩住django字段分配

Python 钩住django字段分配,python,django,orm,django-forms,Python,Django,Orm,Django Forms,在创建“普通”python类时,如果希望在赋值给属性时执行代码,通常的模式是创建一个“受保护”(前导下划线)属性来保存数据,并使用属性来创建getter和setter 现在,如果我想用Django模型来实现这一点,那就没有吸引力了,尤其是因为我必须搜索属性的下划线版本 在Django中运行字段分配代码的推荐方法是什么? 我找不到这样做的信号;我能看到的唯一其他方法是使用一个自定义字段来注册额外的getter/setter处理程序。在非自定义字段上不能这样做,因为没有实际的“字段”:它是一个简单的

在创建“普通”python类时,如果希望在赋值给属性时执行代码,通常的模式是创建一个“受保护”(前导下划线)属性来保存数据,并使用
属性
来创建getter和setter

现在,如果我想用Django模型来实现这一点,那就没有吸引力了,尤其是因为我必须搜索属性的下划线版本

在Django中运行字段分配代码的推荐方法是什么?


我找不到这样做的信号;我能看到的唯一其他方法是使用一个自定义字段来注册额外的getter/setter处理程序。

在非自定义字段上不能这样做,因为没有实际的“字段”:它是一个简单的属性,后面没有类


您需要定义一个自定义字段类,并将
重写为_python
——别忘了将元类设置为。

看起来dirtyfields就是您想要的。不能在设置值的同时截取,但可以在保存前挂接

或者,您应该使用set方法设置
@properties
。当然,这需要您使用getter和setter复制实际的
django.db.models.fields
字段