【问题标题】:How to customise django inline admin form's delete function如何自定义 django 内联管理表单的删除功能
【发布时间】:2017-05-24 14:30:18
【问题描述】:

如何自定义 django 的内联管理表单的删除操作。我的 admin.py 设置如下。

#admin.py
class ChildModelInline(admin.TabularInline):
    model = ChildModel
    can_delete = True

#admin.py
@admin.register(ParentModel)
class ParentModelAdmin(admin.ModelAdmin):
    inlines = [ChildModelInline,]

ChildModel 通过 models.ForeignKey 字段与 ParentModel 相关联。我希望能够在 ParentModel 的 Inline Form 上选择多个要删除的子对象,但不从数据库中删除子对象,只需删除子 obj 中的 ForeignKey 关系。

谢谢!

【问题讨论】:

  • 首先can_delete默认为true,你可以去掉它。至于删除子引用,需要重写ChildModel的delete方法,并将相关的ParentModelAdmin设置为None,不要删除子引用。

标签: python django


【解决方案1】:

您所能做的就是首先为相应模型定义一个自定义操作,然后在该操作中将models.ForeignKey 字段放入null。因此它会删除对象之间的子父关系,但不会从数据库中删除对象。

【讨论】:

    猜你喜欢
    • 2011-12-29
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    相关资源
    最近更新 更多