У меня есть текущий API, как указано ниже, и я намерен сделать так, чтобы он отображал желаемый результат.Я хотел бы добавить возраст и национальность, как показано ниже (см. Желаемый вывод) к типу как вложенный, но, похоже, он отображается только в прямом формате, а не во вложенном.Какой лучший способ сделать его вложенным?
"type" : [
{ "age" : "27", "nationality" : "usa" }
Текущий API
[
{
"name" : "Jay",
"school" : "college",
"type" : "usa"
"age": "27"
"nationality": "usa"
},
]
Желаемый API
[
{
"name" : "Jay",
"school" : "college",
"type" : [
{ "age" : "27", "nationality" : "usa" },
{ "age" : "24", "nationality" : "canada" },
{ "age" : "26", "nationality" : "thailand" },
]
}
]
Serializers.py
class SchoolSerializer(serializers.ModelSerializer):
class Meta:
model = School
fields = ("name", "school", "type", "age", "nationality")
def update(self, instance, validated_data):
instance.name = validated_data.get("name", instance.name)
instance.school = validated_data.get("school", instance.session)
instance.type = validated_data.get("type", instance.session)
instance.age = validated_data.get("age", instance.session)
instance.nationality = validated_data.get("nationality", instance.session)
instance.save()
return instance
models.py
class School(models.Model):
name = models.CharField(max_length=255, null=False)
school = models.CharField(max_length=255, null=False)
type = models.CharField(max_length=255, null=False)
age = models.CharField(max_length=255, null=False)
nationality = models.CharField(max_length=255, null=False)
def __str__(self):
return "{} - {}".format(self.name, self.school)
views.py
class ListSchoolView(generics.ListCreateAPIView):
"""
Provides a get method handler.
"""
queryset = School.objects.all()
serializer_class = SchoolSerializer