#python #django
#python #django
Вопрос:
Я хочу изменить свою полезную нагрузку json с:
{
"grade": "ten",
"studentdlList": [
{
"studentdetail": {
"name": "mw",
"rollno": 19
}
},
{
"studentdetail": {
"name": "battery",
"rollno": 44
}
}
]
}
К форме ниже, потому что первая становится слишком сложной и избыточной:
{
"grade": "ten",
"studentdlList": [
"studentdetail": {
"name": "mw",
"rollno": 19
}
,
"studentdetail": {
"name": "battery",
"rollno": 44
}
]
}
Для достижения результата мои сериализаторы приведены ниже:
class SerializerTemp(serializers.Serializer):
name = serializers.CharField()
rollno = serializers.IntegerField()
class Studentserializer(serializers.ModelSerializer):
studentdetail = SerializerTemp(source="*")
class Meta:
model = Student
fields = ('studentdetail',)
class SiteSerializer(serializers.ModelSerializer):
studentdlList = Studentserializer(many = True)
class Meta:
model = Grade
fields = ("grade", "studentdlList")
Последний сериализатор также имеет update и create (которые я здесь не разместил). Как я могу изменить свою полезную нагрузку на указанную форму, чтобы она была менее избыточной и более понятной?
Комментарии:
1. Ваш ожидаемый результат — недопустимый JSON. Это похоже на входные данные, за исключением того, что вы удалили некоторые обязательные фигурные скобки.
2. Это правильно, что я убрал фигурные скобки, это то, чего я пытался достичь!
Ответ №1:
Как сказано в комментариях, приведенный пример не является допустимым JSON. Здесь у вас есть список объектов, и поэтому скобки необходимы, чтобы явно указать, что это объект:
{
"grade": "ten",
"studentdlList": [
{
"studentdetail": {
"name": "mw",
"rollno": 19
}
},
{
"studentdetail": {
"name": "battery",
"rollno": 44
}
}
]
}
Вы можете изменить свой код на:
class Studentserializer(serializers.ModelSerializer):
class Meta:
model = Student
fields = ('name', 'rollno',)
class SiteSerializer(serializers.ModelSerializer):
studentdlList = Studentserializer(many = True)
class Meta:
model = Grade
fields = ("grade", "studentdlList")
Чтобы создать что-то вроде:
{
"grade": "ten",
"studentdlList": [
{
"name": "mw",
"rollno": 19
},
{
"name": "battery",
"rollno": 44
}
]
}
Комментарии:
1. Я уже могу получить рекомендуемый вывод в формате json, хотя спасибо!