如何检查登录django的用户类型?

i1icjdpr  于 2023-07-01  发布在  Go
关注(0)|答案(1)|浏览(150)

我想检查登录的用户类型,并根据登录的用户返回模板。如何查看用户类型?这是我的Django模型:

class UserProfile(models.Model):
    user = models.OneToOneField(User , on_delete= models.CASCADE)

class Student(models.Model):
    profile = models.OneToOneField(User, on_delete= models.CASCADE)

    rollNo = models.CharField(max_length=15)

    def __str__(self):
        return (self.rollNo)

class Supervisor(models.Model):
    profile = models.OneToOneField(User, on_delete= models.CASCADE)
    teacher_ID = models.CharField(max_length=15)

    def __str__(self):
        return (self.profile)

我尝试了以下语句,但它给出了一个错误:

def homePage(request):
    if not request.user.is_authenticated:
        return render(request , 'accounts/login.html')
    
    user = request.user

    is_student = Student.objects.filter(profile__user=user).exists()

    is_supervisor = Supervisor.objects.filter(profile__user=user).exists()
    return HttpResponse("Hello")

错误:不支持查找OneToOneField的“用户”或不允许在字段上加入。

ndh0cuux

ndh0cuux1#

student.profileUser示例。因此它不具有user字段。这就是错误试图传达的信息。
以下内容应该有效:

def homePage(request):
    if not request.user.is_authenticated:
        return render(request , 'accounts/login.html')
    
    user = request.user

    is_student = Student.objects.filter(profile=user).exists()

    is_supervisor = Supervisor.objects.filter(profile=user).exists()
    return HttpResponse("Hello")

相关问题