多个模型与用户具有一对一关系时的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
但是,在这种情况下,您最好还是创建自定义用户模型。
例如:
老师的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
但是,在这种情况下,您最好还是创建自定义用户模型。