2009-06-20 5 views
4

Мне было интересно, может ли страница администратора django использоваться для внешних пользователей.Django admin - ограничение доступа пользователя

Давайте предположим, что у меня есть эти модели:

class Publisher(models.Model): 
    admin_user = models.ForeignKey(Admin.User) 
    .. 

class Publication(models.Model): 
    publisher = models.ForeignKey(Publisher) 
    .. 

Я не совсем уверен, что admin_user бы - возможно, это может быть электронная почта от пользователя с правами администратора?

В любом случае. Есть ли способ, позволяющий пользователю администратора добавлять или редактировать/удалять публикации, чей издатель связан с этим пользователем администратора?

-Спасибо! -Chris

ответ

15

Если вам нужны более мелкие разрешения в ваших собственных приложениях, следует отметить, что административное приложение Django поддерживает это, используя следующие методы, которые могут быть переопределены в подклассах ModelAdmin. Обратите внимание, что все эти методы получить текущий объект HttpRequest в качестве аргумента, что позволяет для настройки в зависимости от конкретного пользователя, прошедшего аутентификацию:

  • queryset(self, request): Если возвращать QuerySet для использования в списке администраторском объектов для модели. Объекты, отсутствующие в этом QuerySet, не будут показаны.
  • has_add_permission(self, request): Должен возвращаться True, если добавление объекта разрешено, False в противном случае.
  • has_change_permission(self, request, obj=None): Должен возвращаться True, если разрешено редактирование объекта obj, False в противном случае. Если obj - None, следует вернуть True или False, чтобы указать, разрешено ли вообще редактирование объектов этого типа (например, если False будет интерпретироваться как означающее, что текущему пользователю не разрешено редактировать любой объект этого типа).
  • has_delete_permission(self, request, obj=None): Должен возвращаться True, если разрешено исключение obj, False в противном случае. Если obj равно None, следует вернуть True или False, чтобы указать, разрешено ли удаление объектов этого типа вообще (например, если False будет интерпретироваться как означающее, что текущему пользователю не разрешено удалять любой объект этого типа).

[django.com]

+0

+1 Я не знал о параметре запроса для списков администраторов. – SingleNegationElimination

0

Администратор django может в определенной степени быть ограниченным. Для данного пользователя, во-первых, у них должны быть права администратора для входа в админ-сайт. Любой, у кого есть этот флаг, может просматривать все страницы администратора. Если вы хотите ограничить просмотр, вам не повезло, потому что это просто не реализовано. Оттуда каждый пользователь имеет множество разрешений для создания, обновления и удаления для каждой модели на сайте администратора. Самый удобный способ справиться с этим - создать группы, а затем назначить разрешения для групп.

1

Я вижу ответ Криса был полезен на время вопрос был задан. Но теперь это почти 2016 год, и я думаю, что ему будет проще разрешить ограниченный доступ Django Admin panel для конечного пользователя.

система аутентификации Django обеспечивает:

группы: общий способ нанесения этикеток и разрешения на более чем одному пользователю.

Где можно добавить определенные разрешения и применить эту группу к пользователю через панель администратора или с помощью кодов для написания.

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

Пользователь сможет просматривать ограниченные зарегистрированные модели в admin. Надеюсь, это поможет.

Смежные вопросы