как создать Django модели с разными правами?

есть задача: создать модель Ученика и Преподавателя. преподаватель должен иметь право проводить CRUD операции над моделью Курс, а также добавлять к ней учеников. Ученик только read. Как грамотнее это реализовать? модель Usera попытался сделать так, чтобы закрыть обе модели(и ученика и учителя). теперь начинаю сомневаться, что сделал логично

class User(AbstractUser):
    email = models.EmailField(max_length=150, unique=True)
    username = models.CharField(max_length=50)
    password = models.CharField(max_length=255)
    status = models.CharField(max_length=10, choices=[('student', 'S'), ('teacher', 'T')], blank=False)

    USERNAME_FIELD = "email"
    REQUIRED_FIELDS = ["password", "username"]

    def __str__(self):
        return self.email

Теперь если я правильно понимаю, мне нужно реализовать View и Serilazer. но не понимаю как к ним подойти! заранее спасибо за советы


Ответы (1 шт):

Автор решения: Za Ars

В Django есть модель прав доступа: https://www.djbook.ru/rel1.8/topics/auth/default.html#permissions-and-authorization

Проверять наличие прав можно через user.has_perm('myapp.change_bar').

Права можно группировать в Группы - отдельная модель. Таким образом можете создать группы для студентов и преподавателей, и проверять наличие тех или иных прав у необходимых местах.

→ Ссылка