【问题标题】:Django model serializerDjango 模型序列化器
【发布时间】:2018-01-30 10:13:29
【问题描述】:

我正在使用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
        }

如何在putpatch 中使用名称("configname" , "macAddress") 进行更新?

【问题讨论】:

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


【解决方案1】:

更新时无需执行任何操作。只需使用 serializer fields 并指定源参数来定义您想要的带有名称的字段。 rest-framework 序列化器将执行其他部分。

例如。 macAddress = serializers.CharField(source='mac_address')

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

【讨论】:

  • @Ramesh 你的期望是什么?准确地说出来。
  • 谢谢我需要这个...谢谢nanbaaaaa @Rajez
  • 好的。你能投票吗?如果答案是正确的,那么为什么它被否决..!!
【解决方案2】:

驼峰案例你必须使用解析器和渲染器:

$ 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,在API 中使用camelCase 而无需自定义to_representation 方法

【讨论】:

    猜你喜欢
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 2012-11-16
    相关资源
    最近更新 更多