Django | Поле 'id' ожидало число, но получило OrderedDict () - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть конечная точка создания в restframework, которая отлично работает.
views выглядит следующим образом

class ItemAddAPIView(CreateAPIView):
    serializer_class = ItemSerializer
    parser_classes = [MultiPartParser]

    def create(self, request, *args, **kwargs):
        try:
            serializer = self.get_serializer(data=request.data)
            serializer.is_valid(raise_exception=True)
            item_obj = Item.objects.create(title=serializer.data['title'],
                            discount=serializer.data['discount'],
                            rate_per_kg=serializer.data['rate_per_kg'])
            return Response(serializer.data, status=HTTP_201_CREATED)
        except Exception as e:
            print("error :: ",e)

сериализатор приведен ниже:

class ItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = Item
        fields='__all__'

Это отлично работает. Но когда я добавляю SerializerMethodField () к Сериализатору, он выдает ошибку:

Поле 'id' ожидало число, но получило OrderedDict ([('title', 'erwre'), ('rate_per_kg', 53,0), ('скидка', 5,0)]).

class ItemSerializer(serializers.ModelSerializer):
    images = serializers.SerializerMethodField(method_name='get_image_list')
    class Meta:
        model = Item
        fields='__all__'

    def get_image_list(self,obj):
        image_list=[]
        item_images = ItemImage.objects.filter(item=obj)
        request = self.context.get('request')
        for each in item_images:
            image_list.append(request.build_absolute_uri(each.image.url))
        return image_list
...