Выполнение проверки при сохранении модели в админке Django - PullRequest
4 голосов
/ 15 ноября 2011

Я хочу выполнить проверку при сохранении модели через админ-панель django.Я думал об использовании ModelAdmin.save_model(), однако из документации написано:

ModelAdmin.save_model () и ModelAdmin.delete_model () должны сохранять / удалять объект, они не для целей вето,скорее, они позволяют вам выполнять дополнительные операции.

Мне нужно выполнить проверку, чтобы применить ограничения по времени, только если модель редактируется, а в некоторых случаях мне НЕ нужно выполнять сохранение.(Например, если уже полночь, и администратор пытается отредактировать экземпляр модели, я не хочу сохранять изменения и предупреждать администратора, что уже полночь ...)

Что было бы лучшеместо для этого, учитывая, что ModelAdmin.save_model не может наложить вето на операцию сохранения?

Ответы [ 3 ]

4 голосов
/ 15 ноября 2011

Начиная с Django 1.2 вы можете использовать подтверждение модели .

3 голосов
/ 15 ноября 2011

Просто создайте форму модели с обычной проверкой с помощью методов clean, затем назначьте эту форму для использования в админке, выполнив form = MyFormClass внутри класса ModelAdmin.

0 голосов
/ 15 ноября 2011

Это не совсем специфично для сайта администратора, но этот раздел описывает, как переопределить функции сохранения в модели, что позволяет предотвратить сохранение модели.Может быть, есть способ сделать то, что вы хотите с помощью этого метода.

РЕДАКТИРОВАТЬ:

Я на 100% спекулирую здесь, но, возможно, что-то подобное в admin.py вы моглипозвольте этому быть определенным для администратора.

from blah.model import * 

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

MyModel.save = newSaveFunction

admin.site.register(MyModel)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...