Я работаю над сторонним приложением, работающим django 2.2.12.
У меня есть администратор с 3 видами пользователей: "superadmin", "staff" и "other".
Когда я вошел в систему как "superadmin", когда я go в списке пользователей и щелкаю пользователя, я могу редактировать их и сбрасывать их пароль.
Однако, когда я пытаюсь сделать так же, как «штатный» пользователь, я могу видеть данные пользователя, но не могу ничего редактировать, и нет возможности сбросить пароль. Если я пытаюсь получить доступ к URL-адресу вручную (/admin/accounts/user/[USER_ID]/password/
), я получаю сообщение об ошибке «403 Forbidden».
Я заметил, что если я переопределяю метод has_perm
в модели пользователя, это позволяет «персоналу» "пользователь для редактирования пользовательских данных. Однако я хотел бы разрешить только изменение пароля (если пользователь не является суперадмином или сотрудником), не позволяя «штатным» пользователям редактировать других пользователей.
def has_perm(self, perm, obj=None):
return True
У меня сложилось впечатление, что это связано с системой разрешений Django, но я перечитал документы по адресу https://docs.djangoproject.com/en/2.2/topics/auth/default/ и пока не могу понять это .
Спасибо