如何检查用户是否在某个页签中

2021-08-02 17:13:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我在django中有一个user表,为了区别所有的用户,我创建了两个表(Teacher和Student)。你知道吗

两个表都从用户处获取fk

所以,为了进行授权,我应该如何检查用户是否在某个表中。你知道吗

我要这样检查

def test_func(self):
    return self.request.user.check..if..it..exists..in..table

我的模特就是这样。你知道吗

class Teacher(models.Model):
   User = models.OneToOneField(settings.AUTH_USER_MODEL)
3条回答
网友
1楼 ·

既然你还没有发布你的模型,我就给你一个大概的方法。你知道吗

在你的视图.py-

from .models import Teacher,Student

def test_func(request):
    user = request.user
    if (Teacher.objects.filter(user=user).count() > 0) or (Student.objects.filter(user=user).count > 0):
        #do your stuffs here..
网友
2楼 ·

这取决于模型的设置方式。你知道吗

如果你的老师模型看起来像这样

class Teacher(models.Model):
    user = models.ForeignKey(User)

然后您应该能够使用隐式backref检查用户是否是教师

self.request.user.teacher_set.exists()

由于问题已经更新,表明模型与我预期的略有不同,这里是一个更新。你知道吗

class Teacher(models.Model):
    user = models.OneToOneField(User)

这意味着backref会有点不同。你知道吗

hasattr(self.request.user, "teacher")

正如您提到的,您是在django模板中执行此操作的,我非常确定以下操作将起作用:

{% if user.teacher %}
网友
3楼 ·

一种方法是查询两个表:

teacher = Teacher.objects.filter(user=self.request.user)
student = Student.objects.filter(user=self.request.user)
if teacher or student:
     # do what you want.

相关问题