Разрешения на редактирование определенных полей в Django - PullRequest
1 голос
/ 26 февраля 2020

У меня есть две разные группы, которым разрешен доступ Django -Admin. Им разрешено просматривать все поля в модели, но они не должны редактировать все поля. Например, G1 разрешено редактировать «цену» и «ean», в то время как G2 разрешено редактировать «ean» и «detail».

Я пробовал версию, указанную здесь , но я также хочу ограничить возможность редактирования в подробном представлении объекта модели.

РЕДАКТИРОВАТЬ: в настоящее время я пытаюсь выяснить, как получить доступ к пользователю запроса в ModelAdmin, поскольку я зарегистрировал "special- field-permissions "в мета-модели, и я пытаюсь изменить readonly_fields в зависимости от группы. есть идеи как получить пользователя?

1 Ответ

0 голосов
/ 28 февраля 2020

Решение, которое я придумал, - переписать get_changelist и get_form:

def get_form(self, request, obj=None, **kwargs):
    fields = [$$$]  # Default fields for everyone
    if not has_group(request.user, $$$):  # Check if User IS NOT in group
        fields += [$$$]  # Add field that is associated with group to list
    self.readonly_fields = fields
    return super(YourAdminName, self).get_form(request, obj, **kwargs)

def get_changelist(self, request, **kwargs):
    fields = [$$$]  # Default fields for everyone
    if has_group(request.user, $$$):  # Check if User IS in group
        fields += [$$$]  # Add field that is associated with group to list
    self.list_editable = fields
    return super(YourAdminName, self).get_changelist(request, **kwargs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...