如何在 Django 管理中隐藏(不禁用)ModelAdmin 列表视图中的操作添加模型按钮?

How can I hide (not disable) in Django admin the action add model button in ModelAdmin list view?

我知道以下问题非常不同:

我的问题有点不同:如何禁用模型列表视图中的操作按钮,但保留所有其他 Django 部分(例如 OneToOne 关系和内联)的添加功能和链接。代码:

@admin.register(Document)
class DocumentAdmin(admin.ModelAdmin):
    list_display = ("id", "name", "template", "file")
    fields = ["template", "name", "file"]

    def has_add_permission(self, request):
        return False

完全禁用 ModelAdmin 的添加功能(Django 3.2+,未在早期版本中测试)。

一种可能性是:

@admin.register(Document)
class DocumentAdmin(admin.ModelAdmin):
    list_display = ("id", "name", "template", "file")
    fields = ["template", "name", "file"]

    def has_add_permission(self, request):
        return ("add" in request.path or "change" in request.path)

这将允许维护“/admin///add/”功能,也在弹出窗口中。 模型列表视图将允许模型编辑,但没有“添加”按钮。