'Django Rest Framework | Put method not working

I am creating a rest api using DRF the get and post method work perfectly but the put method doesnt update the request

this is my views.py

from django.shortcuts import render
from rest_framework import viewsets

# Create your views here.
from rest_framework.generics import get_object_or_404
from rest_framework.response import Response

from BarakaSalesSystemApp.models import Farmer
from BarakaSalesSystemApp.serializers import FarmerSerializer

def list(self, request):
    farmer = Farmer.objects.all()
    serializer = FarmerSerializer(farmer, many=True, context={"request": request})
    response_dict = {"error": False, "message": "All Farmers List Data", "data": serializer.data}

    return Response(response_dict)

def create(self, request):
    try:
        serializer = FarmerSerializer(data=request.data, context={"request": request})
        serializer.is_valid(raise_exception=True)
        serializer.save()
        dict_response = {"error": False, "message": "Farmers Data Saved Successfully"}
    except:
        dict_response = {"error": True, "message": "Error During Saving Farmers Data"}

    return Response(dict_response)

def update(self, request, pk=None):
    try:
        queryset = Farmer.objects.all()
        farmer = get_object_or_404(queryset, pk=pk)
        serializer = FarmerSerializer(farmer, data=request.data, context={"request": request})
        serializer.is_valid(raise_exception=True)
        serializer.save()
        dict_response = {"error": False, "message": "Successfully Updated Farmer Data"}
    except:
        dict_response = {"error": True, "message": "Error During Updating Farmer Data"}

    return Response(dict_response)


farmer_list = FarmerViewSet.as_view({"get": "list"})
farmer_create = FarmerViewSet.as_view({"post": "create"})
farmer_update = FarmerViewSet.as_view({"put": "update"})

and this is my serializer.py

from rest_framework import serializers
from BarakaSalesSystemApp.models import Farmer, Customer, Order, Bill, Employee, Delivery
class FarmerSerializer(serializers.ModelSerializer):
class Meta:
    model = Farmer
    fields = ["name", "address", "contact", "in_stock"]

When requesting for the put request on postman it gives the error message and not updating



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source