Получить неверные данные из файла 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)
или вы можете сделать поле описания необязательным в сериализаторе