我想通过django Admin面板保存模型时执行检查。我考虑过使用ModelAdmin.save_model()
,但是从文档中说:
ModelAdmin.save_model()和ModelAdmin.delete_model()必须保存/删除对象,它们不是为了否决的目的,而是允许您执行额外的操作。
我需要执行检查以强制执行时间限制,仅在编辑模型时,在某些情况下,我不需要执行保存。 (例如,如果它已经过了午夜并且管理员正在尝试编辑模型实例,我不想保存更改,并提醒管理员它已经过了午夜......)
考虑到ModelAdmin.save_model无法否决保存操作,最佳选择是什么?
答案 0 :(得分:4)
从Django 1.2开始,您可以使用model validation。
答案 1 :(得分:3)
只需通过clean
方法创建一个具有正常验证的模型,然后通过在ModelAdmin类中执行form = MyFormClass
来指定要在管理中使用的表单。
答案 2 :(得分:0)
这不是特定于管理站点的,但是this section描述了如何覆盖模型上的保存功能,这样可以防止模型被保存。可能有这种方法可以用这种方法做你想做的事。
编辑:
我在这里100%推测,但也许在admin.py中做这样的事情你可以允许它是特定于管理员的。
from blah.model import *
def newSaveFunction( self, *args, **kwargs ):
doStuff
MyModel.save = newSaveFunction
admin.site.register(MyModel)