【发布时间】:2021-03-02 13:00:24
【问题描述】:
所以我正在尝试使用 django rest 框架制作 rest API,我想这样做,以便当我发出补丁请求时,我可以更新模型或对象,但是当我尝试这样做时,我得到 TypeError /api/products/1 save() 缺少 1 个必需的位置参数:'self' 错误
views.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']
【问题讨论】:
-
能否分享完整的错误回溯
-
当然!我编辑了我的帖子并添加了回溯
-
您的 ProductSerializer 中可能有错误。你能显示 ProductSerializer
-
我也添加了serializers.py
标签: python django django-rest-framework