Muh*_*cha 5 django serialization json django-rest-framework
我想从Django休息框架得到json响应,所以我有这样的Json Response :.
[
{
"id": 1,
"TitleEnglish": "Tiny Talents Program",
"TitleArabic": "Tiny Talents Program",
"DescriptionEnglish": "Timing: 8:00 am till 1:00 pm",
"DescriptionArabic": "Timing: 8:00 am till 1:00 pm",
"CategoryEnglish": "Art & Education ",
"CategoryArabic": "Art & Education ",
"Date": "2015-05-07",
"Status": true,
"Image": "--"
}
]
Run Code Online (Sandbox Code Playgroud)
但我需要这样的回应:
{
"data": [
{
"id": 1,
"TitleEnglish": "Tiny Talents Program",
"TitleArabic": "Tiny Talents Program",
"DescriptionEnglish": "Timing: 8:00 am till 1:00 pm",
"DescriptionArabic": "Timing: 8:00 am till 1:00 pm",
"CategoryEnglish": "Art & Education ",
"CategoryArabic": "Art & Education ",
"Date": "2015-05-07",
"Status": true,
"Image": "--"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我的序列化代码是:
class PromotionSerializer(serializers.HyperlinkedModelSerializer):
CategoryEnglish = serializers.CharField(read_only=True, source="Category.TitleEnglish")
CategoryArabic = serializers.CharField(read_only=True, source="Category.TitleArabic")
class Meta:
model = Promotion
fields = ('id', 'TitleEnglish', 'TitleArabic', 'DescriptionEnglish', 'DescriptionArabic', 'CategoryEnglish','CategoryArabic', 'Date','Status','Image')
Run Code Online (Sandbox Code Playgroud)
我通过更改视图解决了我的问题:
我添加了一个列表方法,我的问题解决了:
def list(self, request):
queryset = Promotion.objects.all()
serializer_class = PromotionSerializer(queryset, many=True)
serialized_data = {'data': serializer_class.data}
return Response(serialized_data)
Run Code Online (Sandbox Code Playgroud)
小智 2
最简单的解决方案是重写 to_representation 方法
def to_representation(self, instance):
data = super(PromotionSerializer, self).to_representation(instance)
return {'data': data }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3840 次 |
| 最近记录: |