У меня есть конечная точка создания в 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