Django разграничение доступа
Я занимаюсь изучением Django. И хочу разработать CRM для онлайн школы. Для нее требуется 4 вида аккаунтов: ученик, преподаватель, администратор школы, владелец школы. Ни как не могу определиться какой вариант разграничения доступа будет правильным. На данный момент планирую сделать так:
Создать 5 приложений:
- teacher_account - преподаватель
- student_account - ученик
- administrator_account - администратор школы
- boss_account - аккаунт владельца
- accounts - для авторизации
И в моделях создать по одному аккаунту: teacher_account/models.py
from django.contrib.auth.models import User
class Teacher(models.Model):
account = models.ForeignKey(User, on_delete=models.PROTECT,
related_name='teacher')
...
class Meta:
db_table = 'account_teachers'
permissions = [("can_do_teacher_work", 'can do teacher work')]
student_account/models.py
from django.contrib.auth.models import User
class Student(models.Model):
account = models.ForeignKey(User, on_delete=models.PROTECT,
related_name='student')
...
class Meta:
db_table = 'account_students'
permissions = [("can_do_student_work", 'can do student work')]
И по аналогии 2 других аккаунта.
Затем создать 4 группы и привязать к ним permissions каждого аккаунта, через Django Admin.
И в контроллерах каждого приложения создавать классы которые наследуются от LoginRequiredMixin и PermissionRequiredMixin контроллировать доступ к страницам.
Правильный ли способ я выбрал? Не говнокод ли получится?