简体   繁体   中英

Django RestFramework Serializer request.data with array object

i have this situation, i received by POST this data:

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

My serializers

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)

In my view pass request.data to FieldsSerializer()

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

output:

Exception: (ReturnDict([('fields', [])]), ReturnDict())

i use versions Django==1.8.15 and djangorestframework==3.0

you has single data for your FieldsSerializer , so you just need to remove many=True while initial the serializer.

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

or as universal solution

many = isinstance(request.data, list)
serializer = FieldsSerializer(data=request.data, many=many)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM