django:如何为模型管理员挂钩保存按钮?

zer*_*lus 5 django django-admin

我有一个带有"状态"字段的模型.当用户使用Admin应用程序修改实例时,如何挂钩"保存"按钮单击以便我可以将"状态"更新为依赖于登录用户的用户名的值?

Ber*_*ant 13

覆盖你的modeladmin's save_model-method:

class ModelAdmin(admin.ModelAdmin):       
    def save_model(self, request, obj, form, change):
        user = request.user 
        instance = form.save(commit=False)
        if not change:    # new object
            instance.status = ....
        else:             # updated old object
            instance.status = ...
        instance.save()
        form.save_m2m()
        return instance
Run Code Online (Sandbox Code Playgroud)


Yuv*_*dam 6

使用pre_save信号.当然,它将在每个实例保存操作上调用,不仅来自管理员,而且它确实适用于您的情况.