как создать 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 шт):
В Django есть модель прав доступа: https://www.djbook.ru/rel1.8/topics/auth/default.html#permissions-and-authorization
Проверять наличие прав можно через user.has_perm('myapp.change_bar').
Права можно группировать в Группы - отдельная модель. Таким образом можете создать группы для студентов и преподавателей, и проверять наличие тех или иных прав у необходимых местах.