Update existing data by django-rest-framework upload file

22 views Asked by At

I am able to add data normally, but cannot update existing data. I can add a new entry, but I can't update entries with the same name in the imported data. What should I do?

   
class CategoryUploadView(APIView):
    authentication_classes = [OAuth2Authentication]
    permission_classes = [AllowAny]    
    parser_classes = [MultiPartParser]

    def post(self, request):
        file_obj = request.FILES['file']
        decoded_file = file_obj.read().decode('utf-8').splitlines()
        reader = csv.DictReader(decoded_file)
        for row in reader:
            serializer = CategorySerializer(data=row)
            if serializer.is_valid():
                serializer.save()
            else:
                return Response(serializer.errors, status=400)
        return Response({"message": "Data imported successfully"}, status=200)

class CategorySerializer(serializers.ModelSerializer):
    class Meta:
        model=Category
        fields=['id', 'name']

    def to_internal_value(self, data):
        data = data.copy()
        data['name'] = data.get('name', None).lower()
        return super().to_internal_value(data)

class Category(models.Model):
    name = models.CharField(max_length=32, unique=True)
    description = models.CharField(max_length=255)
    update_on = models.DateField(auto_now=True)

    def __str__(self) -> str:
        return self.name 

0

There are 0 answers