Как в админке для пользователей разрешить просмотр всех записей?

Как в админке для пользователей разрешить просмотр всех записей, НО не давать право на редактирование записи.
Django еще только изучаю.

У меня есть две группы пользователей.
Есть три правила: add_*, change_*, delete_*

Как я понял, чтобы пользователи могли смотреть все записи определенной модели, необходимо присвоить им правило change_MODEL, но при этом они получается уже могут редактировать запись. Как мне лучше сделать. Необходимо им все видеть, но ничего не редактировать )

Спасибо!
  • Вопрос задан
  • 192 просмотра
Пригласить эксперта
Ответы на вопрос 2
Как вариант, можно использовать метод get_readonly_fileds
Т.е. несмотря на наличие у пользователя прав change_*, редактировать он по факту не сможет, т.к. все поля будут закрыты для изменения.
class BaseAdmin(admin.ModelAdmin):
    def get_readonly_fields(self, request, obj=None):
        if 'имя группы пользователей' in [g.name for g in request.user.groups.all()]:
            return self.get_fields(request, obj)
        return None


Дальше можно просто наследовать все модели от BaseAdmin, чтобы вручную не переопределять этот метод.
@admin.register(MyModel)
class MyModelAdmin(BaseAdmin):
    pass


P.S. Мне самому мой способ кажется достаточно костыльным, был бы рад увидеть в ответах более красивое решение.
Ответ написан
Комментировать
zelsky
@zelsky
Создать групу с правами только просмотра, и при регистрации дефолтно добавлять в эту групу.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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