Django:在管理中的 "clean"之后执行的方法

标签 django django-forms django-admin

相当简单:在“clean”方法之后可以覆盖哪个方法?我正在使用“clean”来验证上传的图像,一旦我确认它没问题并保存,我想使用一些外部 API 来切换它:

class FooAdminForm(forms.ModelForm):
    class Meta:
        model = Asset
        fields = ["name", "file",]
    
    def clean(self):
        cleaned_data = super(FooAdminForm, self).clean()
        ...
        return cleaned_data

    def bar(self):
        # do stuff with new data in database


class FooAdmin(admin.ModelAdmin):
    list_display = ["name", "file",]
    form = FooAdminForm

是否有某种方法bar可以满足我的需要?或者我是否必须与信号搏斗(例如 here )?

最佳答案

ModelAdmin 类有一个方法 save_model [Django docs]调用它来保存模型实例,因此您可以根据需要覆盖它:

class FooAdmin(admin.ModelAdmin):
    list_display = ["name", "file",]
    form = FooAdminForm
    
    def save_model(self, request, obj, form, change):
        super().save_model(request, obj, form, change)
        # Do something with `obj`

关于Django:在管理中的 "clean"之后执行的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67278401/

相关文章:

python - django 模板帮助,颠倒

django - 在 Django 中查找特定范围内的重叠日期

Django 将数字渲染为 5 星评级

django - 为什么 django 为外键生成选择框很慢?

python - Django 查询集中的正则表达式

python - 为什么在 Django 启动时调用表单字段 __init__ 方法?

python - Django 。简单的 FormView 不保存

Django 文本输入提前自动完成

django - Django管理员内联中的“国家/州/城市”下拉菜单

Django 管理自定义模板标签