Как я могу скрыть (не отключить) в админке Django кнопку добавления модели в представлении списка ModelAdmin?

Я знаю о следующих вопросах, которые довольно сильно отличаются друг от друга:

Мой вопрос немного другой: как я могу отключить кнопку действия в представлении списка моделей, но сохранить функциональность добавления и ссылки для всех других частей 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/<app>/<model>/add/", также во всплывающем окне. Представление списка моделей позволит редактировать модель, но не будет иметь кнопки "добавить".

Вернуться на верх