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

Performing a check when saving a model in Django's admin

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

ModelAdmin.save_model() and ModelAdmin.delete_model() must save/delete the object, they are not for veto purposes, rather they allow you to perform extra operations.

我需要执行一个检查来强制执行时间约束,只有在编辑模型时,在某些情况下,我不需要执行保存。(例如,如果已过午夜,并且管理员正在尝试编辑模型实例,我不想保存更改,并警告管理员已过午夜…)

考虑到modeladmin.save_模型不能否决保存操作,那么最好的方法是什么?


从Django 1.2开始,您可以使用模型验证。


只需通过clean方法创建一个正常验证的模型表单,然后通过在modeladmin类中执行form = MyFormClass来分配要在管理中使用的表单。


它实际上并不是特定于管理站点的,但是本节描述了如何覆盖模型上的保存函数,这允许您阻止保存模型。可能是有一种方法可以用这个方法做你想做的事情。

编辑:

我在这里是100%的推测,但也许通过在admin.py中这样做,您可以允许它是特定于管理员的。

1
2
3
4
5
6
7
8
from blah.model import *

def newSaveFunction( self, *args, **kwargs ):
    doStuff

MyModel.save = newSaveFunction

admin.site.register(MyModel)