如何在django管理面板中保存文件时实现脚本?

时间:2016-01-17 19:35:08

标签: python django django-admin

我是django的新手。 我想在通过“管理面板”上传到服务器后运行一个脚本(例如,压缩文件),即当用户从管理面板点击“保存”时,它应该被压缩(或者其他一些操作,我上传后可能要实施)。 或者你可以告诉我当用户点击保存按钮时调用哪个函数。

2 个答案:

答案 0 :(得分:0)

您可以使用信号:https://docs.djangoproject.com/en/dev/topics/signals/ 检测保存操作。

答案 1 :(得分: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 arg是一个布尔值,如果正在更改对象,则为True;如果是第一次创建对象,则为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