Django REST Framework PUT request to update an image

1,337 views
Skip to first unread message

Jessica Dyer

unread,
Jun 23, 2022, 11:24:11 AM6/23/22
to Django REST framework
I have managed to use the Django REST-framework to upload an image associated with an item. However, the PUT request throws an error (400) when attempting to update the image. Here is the code: 
  • Model: 
    • image = models.ImageField(upload_to="images/", blank=True, null=True)
  • Serializer: 
    • class ItemSerializer(serializers.ModelSerializer):
      class Meta:
      model = Item
      fields = "__all__"
  • View:
  • @api_view(["GET", "PUT"])
    def api_item_beta(request, pk):
    try:
    item = Item.objects.get(pk=pk)
     except Item.DoesNotExist:
    return Response(status=status.HTTP_404_NOT_FOUND)
    if request.method == "GET":
    serializer = ItemSerializer(item)
    return Response(serializer.data)
    elif request.method == "PUT":
    serializer = ItemSerializer(item, data=request.data, partial=True)
    if serializer.is_valid():
    serializer.save()
    return Response(serializer.data)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
So, I can POST an image using this serializer. The PUT request works for everything EXCEPT the image. The image data is identical in both cases (where I am posting and putting). What am I missing that the serializer is expecting??

Any help much appreciated! 
Reply all
Reply to author
Forward
0 new messages