【问题标题】:Changing name of json attribute in serializer在序列化程序中更改 json 属性的名称
【发布时间】:2013-11-11 18:46:35
【问题描述】:

如何更改 Django Rest 框架中序列化程序给出的 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

【问题讨论】:

  • 我不太确定问题出在哪里。为什么不直接调用该字段country_code

标签: python django django-rest-framework


【解决方案1】:

您可以在该字段上使用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)

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多