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

时间:2011-11-15 16:44:42

标签: python django django-admin

我想通过django Admin面板保存模型时执行检查。我考虑过使用ModelAdmin.save_model(),但是从文档中说:

  

ModelAdmin.save_model()和ModelAdmin.delete_model()必须保存/删除对象,它们不是为了否决的目的,而是允许您执行额外的操作。

我需要执行检查以强制执行时间限制,仅在编辑模型时,在某些情况下,我不需要执行保存。 (例如,如果它已经过了午夜并且管理员正在尝试编辑模型实例,我不想保存更改,并提醒管理员它已经过了午夜......)

考虑到ModelAdmin.save_model无法否决保存操作,最佳选择是什么?

3 个答案:

答案 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)