【问题标题】:Django: Method to execute after "clean" in adminDjango:在管理员中“清理”后执行的方法
【发布时间】:2021-04-27 07:07:49
【问题描述】:

相当简单:在“干净”方法之后可以覆盖哪个方法?我正在使用“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)?

【问题讨论】:

    标签: django django-forms django-admin


    【解决方案1】:

    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`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-16
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      • 2010-10-12
      • 1970-01-01
      • 2016-09-04
      相关资源
      最近更新 更多