Правила в представлениях для пользовательских типов пользователей

В моем приложении я создал два типа пользователей с отношениями один-к-одному.

class Teacher(models.Model):
    user = models.OneToOneField(AuthUser, primary_key=True, on_delete=models.CASCADE)
    ...

class Student(models.Model):
    user = models.OneToOneField(AuthUser, primary_key=True, on_delete=models.CASCADE)
    ...

В представлениях сейчас я проверяю роль пользователя следующим образом:

student = Student.objects.get(pk=request.user.id)
teacher = Teacher.objects.get(pk=request.user.id)

но он выбрасывает исключение, какой способ лучше использовать?

Я думаю, что дело в параметрах поиска и в данных, которые вы хотите искать по id пользователя не в id пользователя, а в id студента и преподавателя, попробуйте этот код:

student = Student.objects.get(user_id=request.user.id)
teacher = Teacher.objects.get(user_id=request.user.id)

за возникшую ошибку

500:
DoesNotExist at /create/
Student matching query does not exist.

потому что данные, которые вы хотите найти по id, не найдены

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