Django RestFramework Serializer 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)
На мой взгляд передать request.data в FieldsSerializer()
serializer = FieldsSerializer(data=request.data)
serializer.is_valid()
raise Exception(serializer.data, serializer.errors)
выход:
Исключение: (ReturnDict([('fields', [])]), ReturnDict())
я использую версии Django==1.8.15 и djangorestframework==3.0
1 ответ
У вас есть отдельные данные для вашего FieldsSerializer
так что вам просто нужно удалить many=True
пока начальный сериализатор.
serializer = FieldsSerializer(data=request.data)
# ^^^^^^
или как универсальное решение
many = isinstance(request.data, list)
serializer = FieldsSerializer(data=request.data, many=many)