Django Admin - отключить действие «Добавить» для конкретной модели

98

У меня есть сайт django с большим количеством моделей и форм. У меня есть множество настраиваемых форм и форм, а также встроенные формы и пользовательские проверки и пользовательские запросы. Следовательно, действие add model зависит от форм, которым нужны другие вещи, и "add model" в admin django через 500 из пользовательского набора запросов.

Можно ли отключить функцию "Добавить $MODEL" для определенных моделей?

Я хочу, чтобы /admin/appname/modelname/add/ выдал сообщение об ошибке 404 (или подходящее "уйти" ), я не хочу, чтобы кнопка "Добавить $MODELNAME" отображалась в /admin/appname/modelname.

Django admin предоставляет способ отключения действий администратора (http://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/#disabling-actions), однако единственным действием для этой модели является "delete_selected". т.е. действия администратора действуют только на существующие модели. Есть ли способ django-esque сделать это?

  • 0
    К сведению: «действия» в django admin - это раскрывающийся список, который применяется в представлении списка изменений ко всем отмеченным строкам в списке.
  • 1
    Похожие (но разные) вопросы: stackoverflow.com/questions/1721037/…
Теги:
django-admin

2 ответа

253
Лучший ответ

Это легко, просто перегрузите метод has_add_permission в свой класс Admin следующим образом:

class MyAdmin(admin.ModelAdmin):
     def has_add_permission(self, request):
        return False
  • 6
    Это не сработало для меня. Кнопка «Добавить модель» по-прежнему отображается на странице списка изменений модели.
  • 2
    До сих пор работает для меня в 2016 году с Django 1.9. Спасибо!
Показать ещё 7 комментариев
5

По умолчанию syncdb создает 3 разрешения безопасности для каждой модели:

  • Создать (ака добавить)
  • Изменить
  • Удалить

Если вы вошли в систему под именем Admin, вы получите ВСЕ, независимо от того, что.

Но если вы создаете новую группу пользователей с именем "Общий доступ" (например), вы можете назначить ТОЛЬКО разрешения CHANGE и DELETE для всех ваших моделей.

Тогда любой зарегистрированный пользователь, входящий в эту группу, не будет иметь разрешение "Создать", на нем ничего не будет отображаться.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню