覆盖Django Admin的保存方法

Eli*_* MP 10 django django-admin

好吧,我想保存模型的任何实例而不关心DDBB结构.所以我决定def save在每个模型的类中重写.的种类:

def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
    if condition:
        raise Exception("You can´t insert that element")
    return super(name_class, self).save(self, force_insert=force_insert, force_update=force_update, using=using, update_fields=update_fields)
Run Code Online (Sandbox Code Playgroud)

好吧,有了这个我实现插入不引发异常,但如果实例通过此检查我想在DB中插入任何主要限制存在...

我怎么才能得到它?

我想我必须覆盖核心代码save,但我查了一下,但是我没有找到我检查数据库中插入条件的部分.也许,问题只在于表格的验证.

如何在Django Admin中覆盖特定表单?具体来说,我添加,删除或编辑模型的一个类.

Sơn*_*Lâm 25

您可以覆盖ModelAdmin的save_model.

  class MyAdminView(admin.ModelAdmin):
       def save_model(self, request, obj, form, change):
           super(MyAdminView, self).save_model(request, obj, form, change)
Run Code Online (Sandbox Code Playgroud)

  • 修复了来自 @Sayse 的链接,涉及 [当不在 `save_model()` 中应用模型更改时发出警告](https://docs.djangoproject.com/en/3.0/ref/contrib/admin/#modeladmin-methods)。 (2认同)