Как добавить пользовательские разрешения и роли в django rest framework
models.py =============== from django.contrib.auth.models import AbstractUser from django.db import models
# Create your models here. class User(AbstractUser): username = models.CharField(max_length=10, unique=True)
is_superuser = models.BooleanField(default=False) is_staff = models.BooleanField(default=False) is_admin = models.BooleanField(default=False) is_teacher = models.BooleanField(default=False) is_student = models.BooleanField(default=False)
class Admin(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE,
related_name="admin_account")
def __str__(self): return self.user.username class Teacher(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE,
related_name="teacher_account") def str(self): return self.user.username
class Student(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE,
related_name="student_account") def str(self): return self.user.username
Я уже делал нечто подобное, имея учеников и учителей, но я сделал так, что модель ученика и учителя наследовалась от класса User. С учетом этого, мои классы разрешений выглядели следующим образом:
class IsStudent(permissions.BasePermission):
def has_permission(self, request, view):
return request.user.student and request.user.is_authenticated