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)
Другие вопросы по тегам