Django 重写ModelAdmin.save_model()和ModelForm.save()时出现问题

Django 重写ModelAdmin.save_model()和ModelForm.save()时出现问题,django,Django,我希望重写ModelForm的save()函数,以便在用户按下特定的提交按钮时更新模型上的字段。我还想检查一些其他字段并更新它们的值,我已经在ModelAdmin的save_model()函数中完成了这项工作。但是,正在为对象传递save_model()函数。如果我注释掉表单的save()函数,那么save_model()函数将按预期工作 是否有一个问题,超越这两个,或我犯了一个错误的地方 下面是一个简单的例子: admin.py: class TestAdmin(admin.ModelAdmi

我希望重写ModelForm的save()函数,以便在用户按下特定的提交按钮时更新模型上的字段。我还想检查一些其他字段并更新它们的值,我已经在ModelAdmin的save_model()函数中完成了这项工作。但是,正在为对象传递save_model()函数。如果我注释掉表单的save()函数,那么save_model()函数将按预期工作

是否有一个问题,超越这两个,或我犯了一个错误的地方

下面是一个简单的例子:

admin.py:

class TestAdmin(admin.ModelAdmin):
    form = TestForm
    def save_model(self, request, obj, form, change):
        print 'test'
        super(PostAdmin, self).save_model(request, obj, form, change)

admin.site.register(TestModel, TestAdmin)
forms.py:

class TestForm(forms.ModelForm):
    class Meta:
        model = TestModel
    def save(self, force_insert=False, force_update=False, commit=True):
        print 'test'
        super(TestForm, self).save(commit=True)

如果您正在重写
ModelAdmin.save\u model
,而没有调用
super().save\u model
(在您的示例中,我可以看到),则应该显式调用
表单.save()


如果您以某种方式调用
ModelForm.save
,通过超级或显式调用,我不明白为什么它不起作用;但是我可以告诉您,如果我要覆盖
save\u模型
,我的首选是将自己限制为覆盖
模型。save()

您的
模型表单
需要返回实例

就我所记得的,就在
save\u model
之前,管理员执行
save(commit=False)
并将未保存的实例传递给
save\u model
。如果不返回任何内容,
save()==None

return super(CategoryForm, self).save(commit=True)

最后一行应该读TestForm而不是CategoryForm吗?好的,我已经编辑了这个问题