Задать вопрос
@barolina
turn coffee into code

Как заблокировать доступ на изменение только части полей?

Есть модель
class BookModel(model.Models):
           name - наименование книги
           text  - описание книги
          file

И есть ресурс, c методом path, изменяющий к примеру название книги, или ее описание.
Подскажите как можно ограничить доступ к на изменение, к примеру :
1 если пользователь автор данной загруженной книги, или обладает ролью admin, то он может изменять все поля
2 если пользователь, к примеру, обладает ролью user, то он может изменять только поле text

Скажите существуют ли уже какие- то алгоритмы, или что то почитать...., как это организуется.
В DjangoRestFraemwork есть метод has_object _write..., но он блокирует изменение на всю запись, а не на часть полей....
  • Вопрос задан
  • 114 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
@Sovetnikov
технический директор pulsprodaj.ru
Можно поступить радикально. Контролировать изменения полей в сигнале pre_save для Model (надо сохранять в конструкторе или в create старые значения и потом сравнивать в pre_save)
Как плюс будет то, что автоматически этот контроль будет работать и в django admin и в других местах.

Ролевую модель сделайте используя группы и доступы Django. Правильнее конечно через доступы, а доступы уже пользователям или группам назначайте.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы