Как правильно обрабатывать различные типы пользователей в 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 ...", но это много работы. Есть ли более эффективный/корректный способ сделать это?