Пожалуйста, помогите Django Функция работает, но я получаю ошибку: Объект Int не имеет атрибута mete

Здравствуйте помогите пожалуйста моя функция работает я вижу добавленные результаты возвращаются но я получаю ошибку: int object has no attribute meta. Спасибо всем. Добавил отчет о трассировках, как просил Араэлат. Прошло несколько дней, я застрял в этом цикле, кажется, я даже не могу сохранить свой HttpResponse.

TraceBack

Environment:

Request Method: POST
Request URL: http://127.0.0.1:8000/swimmers-update/4

Traceback (most recent call last):
  File "C:\Users\CR\Envs\fcms\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "C:\Users\CR\Envs\fcms\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\CR\Envs\fcms\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\CR\Envs\fcms\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "C:\Users\CR\Envs\fcms\lib\site-packages\django\views\generic\base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "C:\Users\CR\Envs\fcms\lib\site-packages\rest_framework\views.py", line 509, in dispatch
    response = self.handle_exception(exc)
  File "C:\Users\CR\Envs\fcms\lib\site-packages\rest_framework\views.py", line 469, in handle_exception
    self.raise_uncaught_exception(exc)
  File "C:\Users\CR\Envs\fcms\lib\site-packages\rest_framework\views.py", line 480, in raise_uncaught_exception
    raise exc
  File "C:\Users\CR\Envs\fcms\lib\site-packages\rest_framework\views.py", line 506, in dispatch
    response = handler(request, *args, **kwargs)
  File "C:\Users\CR\Envs\fcms\lib\site-packages\rest_framework\decorators.py", line 50, in handler
    return func(*args, **kwargs)
  File "C:\PJ\Fa's Salon\facms_python\accounts\views.py", line 404, in swimmersUpdate
    serializer.save()
  File "C:\Users\CR\Envs\fcms\lib\site-packages\rest_framework\serializers.py", line 207, in save
    self.instance = self.update(self.instance, validated_data)
  File "C:\Users\CR\Envs\fcms\lib\site-packages\rest_framework\serializers.py", line 993, in update
    info = model_meta.get_field_info(instance)
  File "C:\Users\CR\Envs\fcms\lib\site-packages\rest_framework\utils\model_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, но я подозреваю, что вы хотите передать экземпляр Swimmers.

Не зная более полного контекста, можете ли вы попробовать:

@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)

EDIT

Я не очень хорошо знаком с сериализаторами 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)
Вернуться на верх