Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在django管理面板中保存文件时实现脚本?_Python_Django_Django Admin - Fatal编程技术网

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

Python 如何在django管理面板中保存文件时实现脚本?,python,django,django-admin,Python,Django,Django Admin,我是django的新手。 我想在通过“管理面板”上传到服务器后运行脚本(例如压缩文件),即当用户从“管理面板”点击“保存”时,它应该在上传后压缩(或我可能想要实现的其他操作)。 或者,当用户点击“保存”按钮时,您可以告诉我调用了哪个函数。您可以使用以下信号: 检测保存操作。信号可能会起作用,但OP似乎只想在从“管理”面板创建或更改对象时执行操作 我认为最好的方法是使用ModelAdmin方法save\u model() 从: 您可以在管理类的定义中覆盖此方法,如下所示: class SomeOb

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

您可以使用以下信号:
检测保存操作。

信号可能会起作用,但OP似乎只想在从“管理”面板创建或更改对象时执行操作

我认为最好的方法是使用ModelAdmin方法
save\u model()

从:

您可以在管理类的定义中覆盖此方法,如下所示:

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
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