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