Здравствуйте, подскажите как правильно отдать данные сериализатору, чтобы он схавал их.
У меня есть сериализатор:
class ComplaintSerializer(ModelSerializer):
initiatorComplaint = UserSerializer(many=False)
rayons = RayonSerializer(many=False)
themeComplaint = ThemeSerializer(many=False)
typeCall = CallTypesSerializer(many=False)
class Meta:
model = Complaint
fields = '__all__'
И есть APIView:
class ComplaintsView(APIView):
queryset = Complaint.objects.all()
serializer_class = ComplaintSerializer
def post(self, request):
data_post = request.data
data_post['initiatorComplaint'] = request.user.id
data_post['themeComplaint'] = data_post['themeComplaint']
serializer = ComplaintSerializer(data=data_post)
if serializer.is_valid():
serializer.save()
return Response(serializer.data ,status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример данных, которые я отправляю формой:
{
control: false
firstName: null
lastName: null
middleName: null
rayons: 1
snils: null
telNumberInitial: null
textComment: null
themeComplaint: 23
typeCall: 1
unanswered: false
}
Если указывать в сериализаторах вложенные сериализаторы, то при сохранении данных возникают ошибки:
initiatorComplaint:
non_field_errors: ["Invalid data. Expected a dictionary, but got int."]
rayons:
non_field_errors: ["Invalid data. Expected a dictionary, but got int."]
themeComplaint:
non_field_errors: ["Invalid data. Expected a dictionary, but got int."]
typeCall:
non_field_errors: ["Invalid data. Expected a dictionary, but got int."]
Если не указывать вложенных сериализаторов, то он схавает сохранит данные.
Updated 14 Dec. 2017, 16:06 by padr1no.