У меня есть сайт 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 сделать это?
Это легко, просто перегрузите метод has_add_permission в свой класс Admin следующим образом:
class MyAdmin(admin.ModelAdmin):
def has_add_permission(self, request):
return False
По умолчанию syncdb создает 3 разрешения безопасности для каждой модели:
Если вы вошли в систему под именем Admin, вы получите ВСЕ, независимо от того, что.
Но если вы создаете новую группу пользователей с именем "Общий доступ" (например), вы можете назначить ТОЛЬКО разрешения CHANGE и DELETE для всех ваших моделей.
Тогда любой зарегистрированный пользователь, входящий в эту группу, не будет иметь разрешение "Создать", на нем ничего не будет отображаться.