Я работаю над веб-приложением, используя Django 1.3 и Python2.6. Мне нужно расширить модель пользователя Django, чтобы было три типа пользователей и управлять разрешениями для каждого типа.
Для пояснения предположим, что существует три типа пользователей: преподаватели, ассистенты и студенты. TA смогут создать новое «Задание», преподаватели смогут «просмотреть» и подтвердить его, студенты «отправить» решения, которые преподаватели должны будут «просмотреть», а ассистенты, наконец, смогут проверить эти «просмотренные» решения. Теперь существует три типа пользователей: TA
, которые могут создавать Задания и оценивать Решения, Faculty
, которые могут просматривать Задания и Решения, чтобы подтвердить их, и Students
, которые могут отправлять Решения.
Теперь я понимаю, что есть два способа расширить модель пользователя. Я могу создать профиль пользователя и добавить поле с именем «user_type
». Другой способ - создать подкласс модели User. Я думаю, что подклассы — лучший подход, потому что есть поля, которые различаются для разных типов пользователей.
У меня будет одна форма входа, но могут быть разные регистрационные формы для разных типов пользователей. Почему вы выбрали любой из подходов?
Я понимаю, что лучший способ управлять разрешениями для разных типов пользователей — использовать группы пользователей. Как создавать группы, проверять, входит ли пользователь в группу? Влияет ли выбор способа расширения модели User на то, как я управляю разрешениями?