如何在Django Rest框架中返回自定义词典作为对“ create”方法的响应?

时间:2019-04-29 18:56:40

标签: python django django-rest-framework

我正在为我当前的项目使用django rest框架。我正在使用嵌套的序列化程序。

class FirstSerializer(serializers.Serializer):
      field_one = serializers.CharField()
      field_two = serializers.CharField()

class SecondSerializer(serializers.Serializer):
      my_field = FirstSerializer(many=True)

      def create(self, validated_data):
          custom_dictionary = {}
          return custom_dictionary

这就是问题所在。我已经在SecondSerializer中进行了一些操作,现在我需要返回一个自定义词典,而响应中没有键“ my_field”。

1 个答案:

答案 0 :(得分:0)

my_field 设置为write_only=True字段,并删除 create() 方法

class SecondSerializer(serializers.Serializer):
    my_field = FirstSerializer(many=True, write_only=True) # change is here <<<<

    def create(self, validated_data):
        custom_dictionary = {}
        return custom_dictionary

这将确保在更新或创建实例时使用该字段, 但在序列化表示形式时不包括该字段。


用法示例

from rest_framework.decorators import api_view
from rest_framework.response import Response


@api_view()
def foo_view(request):
    second_serializer = SecondSerializer(data=request.data)
    second_serializer.is_valid(True)
    return Response(second_serializer.data)