2017-10-10 38 views
0

我有这种情况,我通过POST接收到该数据:Django的RestFramework串行request.data与阵列对象

{'fields':[{'key':'comment', 'value':'something', 'data_type':'string'}, 
      {'key':'days', 'value':'2', 'data_type':'int'}]} 

我的串行

class FieldSerializer(serializers.Serializer): 
    value = serializers.CharField(max_length=200) 
    data_type = serializers.CharField(max_length=200) 
    key = serializers.CharField(max_length=200) 


class FieldsSerializer(serializers.Serializer): 
    fields = FieldSerializer(many=True) 

我认为通req​​uest.data到FieldsSerializer( )

serializer = FieldsSerializer(data=request.data) 
serializer.is_valid() 
raise Exception(serializer.data, serializer.errors) 

输出:

例外:(ReturnDict([( '字段',[])]),ReturnDict())

我使用版本的Django == 1.8.15和djangorestframework == 3.0

回答

0

你对于您的FieldsSerializer有单个数据,所以您只需在初始化序列化程序时删除many=True

serializer = FieldsSerializer(data=request.data) 
#           ^^^^^^ 

或作为通用的解决方案

many = isinstance(request.data, list) 
serializer = FieldsSerializer(data=request.data, many=many) 
相关问题