python – 钩入django字段赋值

在创建“vanilla”
python类时,如果想要在赋值给属性时执行代码,通常的模式是创建一个“受保护”(lead-underscore)属性来保存数据,并使用property来创建getter和setter .

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

在Django中在字段赋值上运行代码的推荐方法是什么?

我无法发现这样做的信号;我能看到的唯一其他方法是使用可以注册其他getter / setter处理程序的自定义Field.

最佳答案 你根本无法在非自定义字段上执行此操作,因为没有实际的“字段”:它是一个简单的属性,后面没有类.

您需要定义自定义字段类并覆盖to_python – 不要忘记将元类设置为SubfieldBase.

点赞