Как правильно обрабатывать различные типы пользователей в django rest framework?

В настоящее время я использую миксины. В моем проекте много типов пользователей, которые по-разному взаимодействуют с базой данных. Это означает, что мне нужно задать разные запросы для каждого типа пользователей, и я делаю это внутри "get_queryset". Пример для класса view:

class ClassViewSet(mixins.Create,Retrieve,Update,Destory,Generic)
  def get_queryset(self: 'ClassViewSet'):
    role = self.request.user.role
    if role == User.ROLE.TEACHER:
      queryset = ~the classes where the teacher is teaching~
    if role == User.ROLE.STUDENT:
      queryset = ~the class where the student is studying~
    return queryset

Приведенный выше код примера вернет несколько классов, если пользователь является учителем, и один класс, если пользователь является учеником.

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

Как я должен это сделать?

Я мог бы переопределить удаление и обновление из микшинов и сделать то же самое "if role ...", но это много работы. Есть ли более эффективный/корректный способ сделать это?

Вернуться на верх