我正在为我当前的项目使用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”。
答案 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)