モデルフォームのsave()関数をオーバーライドして、ユーザーが特定の送信ボタンを押したときにモデルのフィールドを更新したいとします。また、他のフィールドを調べて値を更新したいのですが、これをModelAdminのsave_model()関数で行っています。ただし、save_model()関数はオブジェクトにNoneを渡しています。フォームのsave()関数をコメントアウトすると、save_model()関数が期待通りに機能します。ModelAdmin.save_model()とModelForm.save()の両方をオーバーライドする際の問題
両方を無効にすることに問題がありますか、どこかで間違いを犯しましたか?ここで
は、最小限の例です:
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)
最後の行でCategoryFormではなくTestFormを読みますか? – akonsu
ああ、良いキャッチ - 私は質問を編集した – Pikaling