Получить неверные данные из файла serializer.data

я хочу получить данные (сумму) из сериализатора, но сериализатор возвращает ничего. но когда я получаю дату из данных запроса, я получаю правильные данные. кто-нибудь может помочь решить эту проблему?

это тело ответа из данных сериализатора и данных запроса. получил {'amount': 1000000} из тела запроса и {'amount': None} из сериализованных данных:

System check identified no issues (0 silenced).
August 23, 2022 - 16:19:21
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
{'amount': 1000000}
{'amount': None}
Internal Server Error: /api/zarinpal/request/
Traceback (most recent

это функция получения запроса

@api_view(['GET', 'POST'])
@permission_classes([IsAuthenticated])
def request_to_pay(request):
    data = request.data
    print(data)
    serializer = RequestToPaySerializer(data=data)
    serializer.is_valid(raise_exception=True)
    print(serializer.data)

а это класс сериализатора:

class RequestToPaySerializer(serializers.Serializer):
    amount = serializers.DecimalField(max_digits=20, decimal_places=3)
    description = serializers.CharField(required=False)

это потому, что запрошенная проверка данных не прошла и данные не представлены в сериализаторе, первый print show печатает данные только с суммой, теперь требуется описание, поэтому я предлагаю сделать вид следующим образом

from rest_framework.response import Response
@api_view(['GET', 'POST'])
@permission_classes([IsAuthenticated])
def request_to_pay(request):
    data = request.data
    print(data)
    serializer = RequestToPaySerializer(data=data)
    if serializer.is_valid(raise_exception=True):
        return Response(data=serializer.data, status=200)
    print(serializer.error) # incase you want to show error
    return Response (data=serializer.error,status=400)

или вы можете сделать поле описания необязательным в сериализаторе

Вернуться на верх