![](/img/trans.png)
[英]TypeError: save() missing 1 required positional argument: '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.