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