簡體   English   中英

/api/products/1 save() 的 TypeError 缺少 1 個必需的位置參數:'self'

[英]TypeError at /api/products/1 save() missing 1 required positional argument: 'self'

So I'm trying to make rest API using django rest framework, I want to make it so that when I make a patch request, I can update the model or objects but when I try to do that, I get TypeError at /api/ products/1 save() 缺少 1 個必需的位置參數:“self”錯誤

視圖.py

class DetailView(APIView):
    def get(self, request, id ,format=None):
        product = get_object_or_404(Product, pk=id)
        serializer = ProductSerializer(product)
        return Response(serializer.data)

    def patch(self, request, id, format=None):
        product = get_object_or_404(Product, pk=id)
        serializer = ProductSerializer(Product, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

完整回溯


Traceback (most recent call last):
  File "/home/arpit/anaconda3/envs/djangoProject/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/home/arpit/anaconda3/envs/djangoProject/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/arpit/anaconda3/envs/djangoProject/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/arpit/anaconda3/envs/djangoProject/lib/python3.7/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "/home/arpit/anaconda3/envs/djangoProject/lib/python3.7/site-packages/django/views/generic/base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/arpit/anaconda3/envs/djangoProject/lib/python3.7/site-packages/rest_framework/views.py", line 509, in dispatch
    response = self.handle_exception(exc)
  File "/home/arpit/anaconda3/envs/djangoProject/lib/python3.7/site-packages/rest_framework/views.py", line 469, in handle_exception
    self.raise_uncaught_exception(exc)
  File "/home/arpit/anaconda3/envs/djangoProject/lib/python3.7/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
    raise exc
  File "/home/arpit/anaconda3/envs/djangoProject/lib/python3.7/site-packages/rest_framework/views.py", line 506, in dispatch
    response = handler(request, *args, **kwargs)
  File "/home/arpit/Desktop/Coding Projects/React-ECom/backend/API/views.py", line 39, in patch
    serializer.save()
  File "/home/arpit/anaconda3/envs/djangoProject/lib/python3.7/site-packages/rest_framework/serializers.py", line 200, in save
    self.instance = self.update(self.instance, validated_data)
  File "/home/arpit/anaconda3/envs/djangoProject/lib/python3.7/site-packages/rest_framework/serializers.py", line 983, in update
    instance.save()

Exception Type: TypeError at /api/products/1
Exception Value: save() missing 1 required positional argument: 'self'

序列化程序.py

from rest_framework import serializers
from .models import Product

class ProductSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Product
        fields = [ 'id','name','price','description']

在這一行

serializer = ProductSerializer(Product, data=request.data)

我認為您的意思是傳遞product實例而不是Product class。

product = get_object_or_404(Product, pk=id)
serializer = ProductSerializer(product, data=request.data)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM