在Django管理中保存模型时执行检查
我想在通过Django的管理面板保存模型时进行一些检查。我考虑过使用ModelAdmin.save_model()
这个方法,但根据文档的说明:
ModelAdmin.save_model()和ModelAdmin.delete_model()必须保存或删除对象,它们不是用来拒绝操作的,而是让你可以执行额外的操作。
我需要进行一个检查,以确保时间限制的要求,只有在模型被编辑时,并且在某些情况下,我需要不执行保存操作。(比如,如果已经过了午夜,而管理员正在尝试编辑一个模型实例,我不想保存这些更改,并且要提醒管理员已经过了午夜……)
考虑到ModelAdmin.save_model不能拒绝保存操作,在哪里进行这个检查比较合适呢?
3 个回答
0
这其实不是特别针对管理网站的内容,不过这一部分讲的是如何重写模型中的保存功能,这样可以让你阻止模型被保存。也许你可以用这种方法实现你想要的效果。
编辑:
我这里完全是在猜测,但也许在admin.py中做一些类似的事情,可以让它变得更适合管理网站。
from blah.model import *
def newSaveFunction( self, *args, **kwargs ):
doStuff
MyModel.save = newSaveFunction
admin.site.register(MyModel)
4
从Django 1.2版本开始,你可以使用模型验证功能。
3
简单来说,你只需要创建一个带有正常验证的表单,使用 clean
方法来检查数据,然后在 ModelAdmin 类里面把这个表单指定为要使用的表单,方法是写 form = MyFormClass
。