Закрыть

Для эффективной работы на сайте используются cookie и обработка персональных данных. Пользуясь этим сайтом, вы соглашаетесь с правилами использования сайта. Подробнее

Цитата дня

Vivazzi.ru

Личный сайт Мальцева Артема

Невозможно — это всего лишь громкое слово, за которым прячутся маленькие люди. Им проще жить в привычном мире, чем найти в себе силы что-то изменить. Невозможное — это не факт. Это только мнение. Невозможное — это не приговор. Это вызов. Невозможное — это шанс проявить себя. Невозможное — это не навсегда. Невозможное возможно.

Мухаммед Али

Убрать кнопку добавить в django

30 июня 2016 г. 0:51

Есть несколько способов убрать кнопку "Добавить" в админке Django. Каждый способ хорош под конкретную задачу.

Ограничение прав на редактирование объекта

Создать в админке группу "Могут просматривать" и добавить нужные права (например, только на изменение объекта), тем самым ограничивая права на создание объектов. А затем необходимым пользователям добавить эту группу.

Мне не особо нравится такой способ. Он мне кажется долговатым, и к тому же иногда хочется, чтобы и суперпользователи не видели эту кнопку.

Переопределение метода has_add_permission

Для конкретной модели в ModelAdmin можно запретить добавлять объект:

@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
     def has_add_permission(self, request):
        return False

Этот метод хорош, но бывает, что есть функциональность, которая добавляет объект с другой части админки, и тогда мы встретим сообщение, что не хватает прав на добавление объекта. Конкретный пример рассмотрен ниже.

Переопределение шаблона change_list.html

Идея этого способа: убрать кнопку на уровне html. Для этого нужно создать файл my_app/templates/admin/my_app/my_model/change_list.html:

{% extends 'admin/change_list.html' %}

{% block object-tools-items %}{% endblock %}

В шаблоне можно увидеть, что идёт переопределение блока object-tools-items, в котором как раз должна находится кнопка "Добавить".

Важно соблюдать, где лежит файл change_list.html иначе django не найдёт наш переопределённый шаблон.

Переопределяемый стандартный шаблон лежит в django/contrib/admin/templates/admin/change_list.html. Если его хорошо изучить, то можно добавлять или изменять различные части страницы.

Мне именно такой способ подошёл, когда я столкнулся с задачей убрать кнопку "Добавить" для списка модели расширения страницы PageExtension в django cms. Тем самым я не могу добавить новый PageExtension из списка, но могу добавить стандартно как это делается из меню Django CMS.

Оцените статью

0 из 5 (всего 0 оценок)

Поля, отмеченные звёздочкой ( * ) , являются обязательными.

Спасибо за ваш отзыв!

Автор статьи

Права на использование данной статьи, расположенной на настоящей странице http://vivazzi.ru/it/remove-add-button/:

Разрешается копировать статью с указанием её автора и ссылки на оригинал без использования параметра rel="nofollow" в теге <a>. Использование:

Автор статьи: Мальцев Артём
Ссылка на статью: <a href="http://vivazzi.ru/it/remove-add-button/">http://vivazzi.ru/it/remove-add-button/</a>

Подробнее: Правила использования сайта

Вам нужно саморазвиваться или вы хотите зарабатывать деньги?

Или вы ищите хорошие IT сервисы или книги? Сохраните свое время и взгляните на мою подборку рекомендаций, которыми постоянно пользуюсь.
Посмотреть рекомендации

Комментариев: 0

Вы можете оставить комментарий как незарегистрированный пользователь. Но, зарегистрировавшись, вы сможете получать оповещения об ответах, а также иметь доступ к своему личному аккаунту для просмотра своих комментариев.

Чтобы оставить комментарий от своего имени войдите или зарегистрируйтесь обычным способом или через социальные сети:

Отправить

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте