2010-11-02 3 views
11

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

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

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, которые разрешены. Кроме того, я хочу добавить группы к этим пользователям в панель администратора.

Спасибо.

ответ

10

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

Shameless вилка: Heres моя вилка очень популярного каждого объекта разрешения приложения: http://github.com/azizmb/django-authority

+0

Звучит хорошо! Вы также указали, как добавить разрешения из кода python? Это было то, что я пропустил в оригинальной версии документа. – sebpiq

5

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

+1

Это позволяет вам устанавливать разрешения на уровне строк, то есть конкретном экземпляре модели. –

4

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

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