Отдельные интерфейсы администратора для разных типов пользователей в django
Недавно я пытался создать проект, в котором задействовано несколько уровней пользователей.
(Просто пример сокращенной и грубой схемы)
- Я (Супер Пользователь)
- Клиент(ы)
- Клиент(ы)
- Коллекции опросов
- SurveyUser(s)
- Приглашенный(ые)
- Обзоры
- Приглашенный(ие) (приглашенный - это ребенок как опроса, так и пользователя)
- Вопросы
- Так далее
- SurveyUser(s)
- Клиент(ы)
Я бы в идеале
- www.example.com/client/ перейдите на клиентский интерфейс, к которому вы должны были быть клиентом для доступа
- www.example.com/customer/ перейдите на интерфейс клиента, к которому вы должны были быть клиентом, чтобы получить доступ
Я уже установил, что использование настраиваемого интерфейса администратора Django для всех из них, вероятно, не будет возможным (или это так?). Поэтому я склоняюсь к созданию вручную "административных" интерфейсов для каждого уровня пользователя, позволяя им управлять своими соответствующими ролями. Каков наилучший способ иметь разные типы пользователей и отдельные интерфейсы для каждого из них?
Мне нравится способ наследования пользователей, описанный по адресу: http://scottbarnham.com/blog/2008/08/21/extending-the-django-user-model-with-inheritance/
Но я не уверен, как бы я настраивал разные области администратора для разных пользователей.
В качестве дополнительной проблемы я также не уверен, как получить доступ к пользовательским свойствам наряду со стандартными пользовательскими свойствами и как их редактировать / сохранять в интерфейсе ACTUAL admin, который я буду использовать.
Мне нужно было бы аутентифицировать пользователей "Клиента" по клиентской базе данных, чтобы проверить, являются ли они клиентами, но каким-то образом также аутентифицироваться по пользовательской базе данных, которая управляет аутентификацией, именем пользователя, паролем и т. Д.
Я перехожу с PHP на Python/Django, так что любые советы очень помогают мне в этом.
Спасибо!
1 ответ
Самое близкое, что я получил к этому, было основано на другой статье здесь: Как создать 2 разных админ-сайта в проекте Django?
Я закончил тем, что создал два совершенно отдельных экземпляра django.contrib.admin.sites.AdminSite, которые в конце концов работали, хотя и не идеально.