Как я могу скрыть (не отключить) в админке Django кнопку добавления модели в представлении списка ModelAdmin?
Я знаю о следующих вопросах, которые довольно сильно отличаются друг от друга:
- Django Admin - Отключить действие 'Add' для определенной модели
- Отключить ссылку на редактирование объекта в админке django (только отображение списка)?
Мой вопрос немного другой: как я могу отключить кнопку действия в представлении списка моделей, но сохранить функциональность добавления и ссылки для всех других частей 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/", также во всплывающем окне. Представление списка моделей позволит редактировать модель, но не будет иметь кнопки "добавить".