多个模型与用户具有一对一关系时的Django

Django when multiple models have one-to-one relationship with user

例如:

老师的models.py:

from django.contrib.auth.models import User

class Teacher(models.Model):
    teacherName=models.CharField(max_length=50)
    course=models.CharField(max_length=50)
    user=models.OneToOneField(User)

学生models.py:

from django.contrib.auth.models import User

class Student(models.Model):
    studentName=models.CharField(max_length=50)
    grade=models.CharField(max_length=50)
    user=models.OneToOneField(User)

当我得到老师的实体后,我可以通过 teacher.user

获取它的用户信息

但是当我得到一个用户的实体时,我如何判断这个用户是属于老师还是学生?

您可以检查用户是否具有学生或教师属性:

>>> u = User.objects.get(id=5)
>>> hasattr(u, 'teacher')
False
>>> hasattr(u, 'student')
True

但是,在这种情况下,您最好还是创建自定义用户模型。