【问题标题】:In Django Rest Framework, how do I serialize values to an array of values rather than an array of objects?在 Django Rest Framework 中,如何将值序列化为值数组而不是对象数组?
【发布时间】:2013-11-17 02:30:14
【问题描述】:

在 Django Rest Framework 中,如何将值序列化为值数组而不是对象数组?这是我的序列化程序代码示例:

class NodeTagSerializer(serializers.ModelSerializer):
    class Meta:
        model = NodeTag
        fields = (
            'name',
        )


class NodeTreeSerializer(serializers.ModelSerializer):
    tags = NodeTagSerializer(required=False)

    class Meta:
        model = NodeTree
        fields = (
            'tags',
        )

这是返回:

"tags": [
    {"name": "Tag1"},
    {"name": "Tag2"}
]

但我想要:

"tags": [
    "Tag1",
    "Tag2"
]

【问题讨论】:

    标签: django json django-models django-rest-framework


    【解决方案1】:

    这个问题的答案在 v3 中发生了变化。新的做法是:

    class NodeTagSerializer(serializers.ModelSerializer):
      def to_representation(self, obj):
          return obj.name
    

    【讨论】:

      【解决方案2】:

      你可以重写to_native()方法直接返回标签名(未测试):

      class NodeTagSerializer(serializers.ModelSerializer):
          def to_native(self, obj):
              return obj.name
      

      【讨论】:

      • @user9:想详细说明一下吗?如果它太长,也许在另一个问题?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-23
      • 2015-06-11
      • 1970-01-01
      • 2021-05-19
      • 2015-03-15
      相关资源
      最近更新 更多