在Django管理中保存模型时执行检查

4 投票
3 回答
2659 浏览
提问于 2025-04-17 06:22

我想在通过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

撰写回答