Ваш CustomUser
класс по существу правильный. Вам не нужны другие классы (SchoolAdmin, Teacher, Student, Parent), так как эта функциональность описана как user_type
.
. Вам нужно изменить выбор типа пользователя, например:
SCHOOL, TEACHER, STUDENT, PARENT = 'school', 'teacher', 'student', 'parent'
USER_TYPES: (
(SCHOOL, 'School'),
(TEACHER, 'Teacher'),
(STUDENT, 'Student'),
(PARENT, 'Parent'),
)
Поле photo
можно добавить к классу CustomUser
.
Кроме того, вы захотите ознакомиться с документацией Django по пользовательской аутентификации и разрешения и авторизация .
Затем вы можете создавать группы и разрешения и назначать им пользователей. Преподаватели - это группа с указанными правами доступа c и т. Д. c.
. Кроме того, вы можете различать по типу user_type в своих шаблонах и представлениях, чтобы показать или скрыть информацию или получить доступ. Например:
def exam_setup_view(request):
# only teachers allowed here, others see 404
if request.user.user_type != CustomUser.TEACHER:
raise Http404()
РЕДАКТИРОВАТЬ В этой статье объясняется, как использовать группы и разрешения Django. Например, вы можете создать пользовательские разрешения для мета-класса вашего пользователя, например, так:
class CustomUser(AbstractUser):
# ...
class Meta:
permissions = (
("can_create_exam", "Can create exam"),
("can_view_user", "Can view user"),
)
Это создаст эти пользовательские разрешения. Вы можете назначить их пользователям в Django Admin или программно, как более подробно описано в этой статье или документации Django.
Есть несколько способов проверить, есть ли у пользователя такие разрешения, ie: используйте декоратор permission_required
, или когда у вас есть пользовательский экземпляр в вашем представлении: user.has_perm('appname.can_create_exam')
, или из шаблона: {% if perms.appname.can_create_exam %}
.