Django函数工作,但我得到错误:Int对象没有属性_meta



我的函数有效。我可以看到添加的结果返回,但我得到一个错误:

int对象没有属性_meta。

似乎我甚至不能保存我的HttpResponse。

回溯:

Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/swimmers-update/4
Traceback (most recent call last):
File "C:UsersCREnvsfcmslibsite-packagesdjangocorehandlersexception.py", line 34, in inner
response = get_response(request)
File "C:UsersCREnvsfcmslibsite-packagesdjangocorehandlersbase.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:UsersCREnvsfcmslibsite-packagesdjangocorehandlersbase.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:UsersCREnvsfcmslibsite-packagesdjangoviewsdecoratorscsrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "C:UsersCREnvsfcmslibsite-packagesdjangoviewsgenericbase.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "C:UsersCREnvsfcmslibsite-packagesrest_frameworkviews.py", line 509, in dispatch
response = self.handle_exception(exc)
File "C:UsersCREnvsfcmslibsite-packagesrest_frameworkviews.py", line 469, in handle_exception
self.raise_uncaught_exception(exc)
File "C:UsersCREnvsfcmslibsite-packagesrest_frameworkviews.py", line 480, in raise_uncaught_exception
raise exc
File "C:UsersCREnvsfcmslibsite-packagesrest_frameworkviews.py", line 506, in dispatch
response = handler(request, *args, **kwargs)
File "C:UsersCREnvsfcmslibsite-packagesrest_frameworkdecorators.py", line 50, in handler
return func(*args, **kwargs)
File "C:PJFa's Salonfacms_pythonaccountsviews.py", line 404, in swimmersUpdate
serializer.save()
File "C:UsersCREnvsfcmslibsite-packagesrest_frameworkserializers.py", line 207, in save
self.instance = self.update(self.instance, validated_data)
File "C:UsersCREnvsfcmslibsite-packagesrest_frameworkserializers.py", line 993, in update
info = model_meta.get_field_info(instance)
File "C:UsersCREnvsfcmslibsite-packagesrest_frameworkutilsmodel_meta.py", line 35, in get_field_info
opts = model._meta.concrete_model._meta
Exception Type: AttributeError at /swimmers-update/4
Exception Value: 'int' object has no attribute '_meta'

Views.py

@api_view(['POST'])
def swimmersUpdate(request, pk):
sw = get_object_or_404(Swimmers,id=pk).sessions
current_sessions = sw + 10


serializer = SubSerializer(instance=current_sessions, data=request.data)

if serializer.is_valid():
serializer.save()
return JsonResponse(serializer.data, safe=False, status=status.HTTP_201_CREATED)
return JsonResponse(data=serializer.errors, safe=False, status=status.HTTP_400_BAD_REQUEST)

您正在向Subserializer传递一个整数的实例,但我怀疑您想要传递一个swimming的实例。

如果不知道更完整的上下文,你可以试试:

@api_view(['POST'])
def swimmersUpdate(request, pk):
sw = get_object_or_404(Swimmers,id=pk)  # gets just one record
current_sessions = sw.sessions + 10
sw.sessions = current_sessions  # updates just the one in memory field for sw (for the one record)
sw.save()  # you may want to do this to commit the new value
serializer = SubSerializer(instance=sw, data=request.data)

if serializer.is_valid():
serializer.save()
return JsonResponse(serializer.data, safe=False, status=status.HTTP_201_CREATED)
return JsonResponse(data=serializer.errors, safe=False, status=status.HTTP_400_BAD_REQUEST)

编辑

我不了解DRF序列化器的最新情况,但我假设您可能想要查看以下内容(如果DRF序列化器不能以这种方式工作,请提前道歉):

@api_view(['POST'])
def swimmersUpdate(request, pk):
sw = get_object_or_404(Swimmers,id=pk)  # gets just one record
serializer = SubSerializer(instance=sw, data=request.data)   
if serializer.is_valid():
current_sessions = serializer.sessions
serializer.sessions = current_sessions + 10  
serializer.save()
return JsonResponse(serializer.data, safe=False, status=status.HTTP_201_CREATED)
return JsonResponse(data=serializer.errors, safe=False, status=status.HTTP_400_BAD_REQUEST)

最新更新