在序列化程序中更改json属性的名称

时间:2013-11-11 18:46:36

标签: python django django-rest-framework

如何更改Django Rest Framework中序列化程序给出的json字段响应的名称?

跟随documentation我尝试了这个之后,但它没有奏效。

from api.models import Countries
from rest_framework import serializers

class CountrySerializer(serializers.Serializer):
    country_geoname_id = serializers.CharField(required=True)
    iso = serializers.CharField(max_length=2L, required=True)
    country_name = serializers.CharField(max_length=64L, required=True)

    def transform_iso(self, obj, value):
        return "country_code"

基本上JSON响应如下所示:

{
    "country_geoname_id": 3041565, 
    "iso": "AD", 
    "country_name": "Andorra"
}, 

我正在尝试将字段iso更改为country_code

1 个答案:

答案 0 :(得分:2)

您可以在该字段上使用source属性。

请参阅: http://django-rest-framework.org/api-guide/fields.html#core-arguments

所以用你的例子你会这样做:

class CountrySerializer(serializers.Serializer):
    country_geoname_id = serializers.CharField(required=True)
    country_code = serializers.CharField(source='iso', max_length=2L, required=True)
    country_name = serializers.CharField(max_length=64L, required=True)

希望这会对你有所帮助。