例如,我有以下模型:
class Teacher(models.Model):
.....
class Student(models.Model):
teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE)
.....
现在,如果我想获取教师的值,可以使用:Teacher.objects.values("id", "name")
,但如何将学生的查询集添加到教师的查询集值中?
这是预期的JSON输出:
{
"id": 1,
"name": "Alan",
"students": [
{
"id": 1,
"name": "John",
"...": "...",
},
{
"id": 2,
"name": "Sam",
"...": "...",
},
{....},
{....},
]
}
注意:我知道我可以通过让学生使用queryset来做到这一点,但是在这种情况下,我将有很多重复的老师,所以我只希望每个老师和他的学生作为对象数组
答案 0 :(得分:0)
Sudent
对象可从Teacher
作为Teacher.objects.student_set
访问。参见https://docs.djangoproject.com/en/3.0/topics/db/queries/#following-relationships-backward。
如果您将related_name="students"
添加到Student.teacher
模型中
class Student(models.Model):
teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE, related_name="students")
然后您可以使用Teacher.objects.students
。参见https://docs.djangoproject.com/en/3.0/ref/models/fields/#django.db.models.ForeignKey.related_name。
顺便说一句,您确定on_delete=models.CASCADE
吗?
答案 1 :(得分:0)
可能不是最佳答案,但是您可以使用Serializer
中的ModelSerializer
或django-restframework
将模型序列化为json
。