Просто чтобы убедиться, что мы находимся на одной странице, вы sh будете иметь следующую структуру пользователя:
- Администратор может видеть ВСЕ
- A Менеджер может видеть СЕБЯ и всех связанных с ним пользователей
- A Пользователь может видеть СЕБЯ и все тут
Технически, существует только связь между Менеджерами и пользователями
Предполагая, что ваша Admin не совпадает с ролью нативного администратора из Django, вы может настроить следующие логи c:
- Расширить модель пользователя с отношением 1: 1 к вашей пользовательской модели. Давайте назовем это
Profile
. - Одним из полей в
Profile
может быть role
, которое может быть либо Admin, Manager, либо User (может потребоваться создать ссылочную таблицу и использовать внешний ключ ) - Другое поле может быть
related_manager
, которое будет внешним ключом для пользовательской модели. Это был бы способ сказать «этот пользователь - мой менеджер»
Вам необходимо добавить указанный c элемент управления в вашу модель, а именно:
related_manager
требуется (или необязательно?), Если пользователь «Пользователь». related_manager
принудительно устанавливается на None
, если пользователь не «Пользователь» related_manager
должен быть пользователем с ролью «Менеджер» - Возможно, вы необходимо настроить
signals
для обработки «Что произойдет, когда менеджер, у которого есть пользователи для управления, станет базовым c пользователем?» Становятся ли эти пользователи неуправляемыми? Или, может быть, вы предотвращаете это, и менеджер может быть понижен в должности только после того, как к нему не подключен пользователь? Все зависит от того, что вы хотите
Обратите внимание, что это один из многих способов справиться с вашей ситуацией