Django: добавление прав доступа к конкретному экземпляру модели - PullRequest
13 голосов
/ 02 ноября 2010

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

Например, у меня есть две такие модели:

model RadioChannel(models.Model):
    name = models.CharField(max_length=150, unique= True)
    number = models.IntegerField( unique= True)

model ProgramSchedule(models.Model):
    channel = models.ForeignKey("RadioChannel")
    name = models.CharField(max_length=150, unique= True)
    start_time = models.DateTimeField()

Теперь мои операторы - мои встроенные пользователи Django. Я хочу создать группы для этих пользователей, чтобы они могли добавлять / удалять / редактировать только допустимые ProgramSchedules. Кроме того, я хочу добавить группы этих пользователей в админ-панель.

Спасибо.

Ответы [ 3 ]

12 голосов
/ 02 ноября 2010

Вы ищете реализацию разрешения объекта.Хорошее сравнение здесь: http://djangopackages.com/grids/g/perms/

Бесстыдный плагин: вот мой форк очень популярного приложения для каждого объекта: http://github.com/azizmb/django-authority

5 голосов
/ 02 ноября 2010

Если я вас правильно понял, то, что вам нужно реализовать, называется разрешениями на уровне строк в Django. Посмотрите на это, если это поможет. http://code.djangoproject.com/wiki/RowLevelPermissionsDeveloper

4 голосов
/ 31 июля 2014

Я бы рекомендовал использовать Django Guardian для разрешений на уровне объектов.

...