Py学习  »  Django

django orm:为“field”而不是“model”实现预保存

Ali Yılmaz • 5 年前 • 1222 次点击  

假设我有这个模型:

class MyModel(models.Model):
    char_field = models.CharField(max_length=64)
    json_field = LimitedJSONField(default={})

哪里 LimitedJSONField 是用于在数据库上存储jsonstring的自定义字段。

我想做预存检查 json_field (例如,如果超过,截短其长度)。我读过关于重写的书 save 方法 MyModel ,我也知道我可以实现 pre-save 信号,但我想在现场处理。因为我用 有限J现场 500个型号。我必须超越 节约 这500个模型的方法是什么?我实现了 validate 方法对 有限J现场 但它不会在保存时触发(它只在表单验证时触发,即 full_clean 例行公事)

如何实现验证程序 有限J现场 ,所以不管怎样 Model 使用它,该字段将根据内部编写的单个业务逻辑进行验证 有限J现场 ?

简单地说,我想在 field 类和我不希望在模型类中写入任何逻辑,因此解决方案是可伸缩的,新模型类可以使用此字段,而无需实现样板逻辑代码。

非常感谢你的时间!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40656
 
1222 次点击  
文章 [ 1 ]  |  最新文章 5 年前