Python 如何使用django rest框架返回嵌套json
我正在尝试使用django构建restapi。这是我的models.py和serializers.py。Python 如何使用django rest框架返回嵌套json,python,django,django-rest-framework,Python,Django,Django Rest Framework,我正在尝试使用django构建restapi。这是我的models.py和serializers.py。 [{ "id": 1, "city": "Sidney", "personName": "Giles", "dob": "2011-02-02" }, { "id": 5, "city":
[{
"id": 1,
"city": "Sidney",
"personName": "Giles",
"dob": "2011-02-02"
},
{
"id": 5,
"city": "Paulba",
"personName": "Sidney",
"dob": "2016-07-16"
}]
型号.py
from django.db import models
class Person(models.Model):
city = models.CharField(max_length=100)
dob = models.DateField(editable=True)
personName = models.CharField(max_length=100)
class Meta:
ordering = ['-dob']
from rest_framework import serializers
from .models import Person
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = [ 'id', 'city', 'dob', 'personName']
serailizers.py
from django.db import models
class Person(models.Model):
city = models.CharField(max_length=100)
dob = models.DateField(editable=True)
personName = models.CharField(max_length=100)
class Meta:
ordering = ['-dob']
from rest_framework import serializers
from .models import Person
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = [ 'id', 'city', 'dob', 'personName']
这是我的api-。我正在尝试按城市名称获取数据
我得到的json格式如下。
[{
"id": 1,
"city": "Sidney",
"personName": "Giles",
"dob": "2011-02-02"
},
{
"id": 5,
"city": "Paulba",
"personName": "Sidney",
"dob": "2016-07-16"
}]
但我希望json的格式如下所示-
[
{
"id": 123,
"city": "Sidney",
"personInCity": [
{
"id": 1,
"city": "Sidney",
"personName": "Giles",
"dob": "2011-02-02"
},
{
"id": 5,
"city": "Paulba",
"personName": "Sidney",
"dob": "2016-07-16"
}
]
}
]
我不知道Serializers.py需要做什么更改要获得正确的响应,您可能需要更改models.py和Serializers.py,如下所示
from django.db import models
class Person(models.Model):
city = models.CharField(max_length=100)
dob = models.DateField(editable=True)
personName = models.CharField(max_length=100)
class Meta:
ordering = ['-dob']
from rest_framework import serializers
from .models import Person
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = [ 'id', 'city', 'dob', 'personName']
#----------models.py-----------
from django.db import models
class City(models.Model):
city = models.CharField(max_length=100)
def __str__(self):
return self.city
class Person(models.Model):
dob = models.DateField(editable=True)
personName = models.CharField(max_length=100)
city = models.ForeignKey(City, on_delete=models.SET_NULL, null=True,
related_name="personInCity")
class Meta:
ordering = ['-dob']
def __str__(self):
return self.personName
#----------Serializers.py-----------
from rest_framework import serializers
from .models import Person, City
class PersonSerializer(serializers.ModelSerializer):
city = serializers.StringRelatedField(many=False)
class Meta:
model = Person
fields = ("id", "personName", "dob", "city",)
class CitySerializer(serializers.ModelSerializer):
personInCity=PersonSerializer(many=True)
class Meta:
model = City
fields = ("id", "city","personInCity")
应该给你这样的回答: