Django模型序列化器

时间:2017-08-22 08:13:21

标签: python django python-2.7 django-rest-framework

我正在使用django-rest-framework - 我想重命名(在列表中)模型序列化程序中的字段,并使用我在列表中重命名的相同名称进行更新(更新)。

class ConfiglistSerializer(serializers.ModelSerializer):

    class Meta:
        model = Config
        fields = ('id', 'configname', 'mac_address')
    def to_representation(self, obj):
        return {
            'id': obj.id,
            'configname': obj.name,
            'macAddress': obj.mac_address
        }

如何使用("configname" , "macAddress")put中的patch名称进行更新?

2 个答案:

答案 0 :(得分:2)

你必须为camel case使用解析器和渲染器:

$ pip install djangorestframework-camel-case

并将渲染和解析器添加到django设置文件中。

REST_FRAMEWORK = {

    'DEFAULT_RENDERER_CLASSES': (
        'djangorestframework_camel_case.render.CamelCaseJSONRenderer',
        # Any other renders
    ),

    'DEFAULT_PARSER_CLASSES': (
        'djangorestframework_camel_case.parser.CamelCaseJSONParser',
        # Any other parsers
    ),
}

通过这种方式,您可以在序列化程序中使用snake_case,而无需自定义to_representation方法的API中的camelCase

答案 1 :(得分:0)

无需在更新时执行任何操作。只需使用macAddress = serializers.CharField(source='mac_address')并指定源参数来定义您想要的名称字段。 rest-framwork serilizer将做其他部分。

对于前。 id

请参阅此处http://www.django-rest-framework.org/api-guide/fields/以了解序列化工具字段的工作原理