2016-01-17 2 views
2

Я новичок в django. Я хочу запустить сценарий (например, заархивировать файл) после того, как он будет загружен на сервер через «панель администратора», то есть когда пользователь нажимает «Сохранить» на панели администратора, он должен получить заархивированную (или некоторые другие манипуляции, которые я могу захотеть реализовать) после его загрузки. Или вы можете просто сказать, какая функция вызывается, когда пользователь нажимает кнопку сохранения.Как реализовать скрипт при сохранении файла в панели администратора django?

ответ

0

Сигналы могут работать, но похоже, что OP хочет что-то делать только тогда, когда объект создан или изменен с панели администратора.

Я думаю, что лучший способ сделать это - использовать метод ModelAdmin save_model().

От Django docs:

ModelAdmin.save_model(self, request, obj, form, change) 

Вы можете перезаписать этот метод в определении класса администратора следующим образом:

class SomeObjectAdmin(admin.ModelAdmin): 
    def save_model(self, request, obj, form, change): 
     # do any pre-save stuff here 
     obj.save() 

change аргумента является логическим значением, которое истинно, если объект изменяется и false, если объект создается впервые. Поэтому, если вы хотите выполнить некоторую функцию только при создании объекта:

def save_model(self, request, obj, form, change): 
     if not change: 
      # do your compression here 
      # do any other pre-save stuff here 
     obj.save() 
     # do any post-save stuff here 
Смежные вопросы