如何访问一对多关系中的多个字段
How To Access Many Field In One-To-Many Relationship
我有两种不同的用户类型,教师和学生。我的学生与老师有一对多的关系(一个学生可以有一个老师/一个老师可以有很多学生)。我可以在这样的模板中访问学生的教师 user.student.teacher
,但我不知道如何访问教师的学生列表?
- 从老师的个人资料页面 id 打印他们的学生名单。
# override default User model
class User(AbstractUser):
user_type = models.CharField(choices=USER_TYPES, max_length=255, default='student')
class Teacher(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
class Student(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE, default=None, null=True)
谢谢。
简单
user.teacher.student_set.all()
参考:
- What is
related_name
used for in Django?
Django 自动允许您访问其他方式,默认情况下名称管理器 student_set
。注意,型号名称后跟 _set
。您可以通过在 ForeignKey
.
中设置 related_name
来覆盖此名称
深入学习here
可以查询,teacher.student_set.all()
这会显示老师的所有学生
你也可以这样用related_name
,
class Student(models.Model):
...
teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE, default=None, null=True, related_name='students')
然后这样查询,teacher.students.all()
我有两种不同的用户类型,教师和学生。我的学生与老师有一对多的关系(一个学生可以有一个老师/一个老师可以有很多学生)。我可以在这样的模板中访问学生的教师 user.student.teacher
,但我不知道如何访问教师的学生列表?
- 从老师的个人资料页面 id 打印他们的学生名单。
# override default User model
class User(AbstractUser):
user_type = models.CharField(choices=USER_TYPES, max_length=255, default='student')
class Teacher(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
class Student(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE, default=None, null=True)
谢谢。
简单
user.teacher.student_set.all()
参考:
- What is
related_name
used for in Django?
Django 自动允许您访问其他方式,默认情况下名称管理器 student_set
。注意,型号名称后跟 _set
。您可以通过在 ForeignKey
.
related_name
来覆盖此名称
深入学习here
可以查询,
teacher.student_set.all()
这会显示老师的所有学生你也可以这样用
related_name
,
class Student(models.Model):
...
teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE, default=None, null=True, related_name='students')
然后这样查询,teacher.students.all()