在你的 models.py 添加两个方法:
class School(models.Model):
name = models.CharField(max_length=100, null=False, blank=False)
city = models.CharField(max_length=100, null=False, blank=False)
street = models.CharField(max_length=100, null=False, blank=False)
def count_of_students(self):
return Student.objects.filter(school_id=self).count()
def students_in_school(self):
return list(Student.objects.filter(school_id=self))
def __str__(self):
return f"{self.city}->{self.street}->{self.name}"
class Student(models.Model):
school_id = models.ForeignKey(School, on_delete=models.CASCADE)
first_name = models.CharField(max_length=100, null=False, blank=False)
last_name = models.CharField(max_length=100, null=False, blank=False)
def __str__(self):
return f"{self.first_name} {self.last_name}"
在你的 serializers.py
class StudentSerializer(serializers.Serializer):
first_name = serializers.CharField(max_length=100)
last_name = serializers.CharField(max_length=100)
class SchoolSerializer(serializers.Serializer):
count_of_students = serializers.IntegerField()
name = serializers.CharField(max_length=100)
students_in_school = StudentSerializer(many=True)
在你的views.py中:
def get_school(request, id):
school = School.objects.get(pk=id)
serilizer = SchoolSerializer(school)
json = rest_framework.renderers.JSONRenderer().render(serilizer.data)
from django.http import HttpResponse
return HttpResponse(json, content_type='application/json')
在你的 urls.py
path('schools/<int:id>',get_school)
作为示例数据,您可以在此处调用输入链接描述
这是示例输出:
{
"count_of_students":9,
"name":"S1",
"students_in_school":[
{
"first_name":"surname_1",
"last_name":"surname_{i}"
},
{
"first_name":"surname_2",
"last_name":"surname_{i}"
},
{
"first_name":"surname_3",
"last_name":"surname_{i}"
},
{
"first_name":"surname_4",
"last_name":"surname_{i}"
},
{
"first_name":"surname_5",
"last_name":"surname_{i}"
},
{
"first_name":"surname_6",
"last_name":"surname_{i}"
},
{
"first_name":"surname_7",
"last_name":"surname_{i}"
},
{
"first_name":"surname_8",
"last_name":"surname_{i}"
},
{
"first_name":"surname_9",
"last_name":"surname_{i}"
}
]
}