ValueError: недопустимый литерал для int() с основанием 10

Я пытаюсь понять, почему у меня возникает эта ошибка для пользовательского текстового поля uuid.

Данные:

{
            "contact_uuid": "49548747-48888043",
            "choices": "",
            "value": "1",
            "cardType": "TEXT",
            "step": 1,
            "optionId": "",
            "path": "/app/e120703e-2079-4e5f-8420-3924f9e0b9c8/page1/next",
            "title": "Welcome to my app"
        }

View: Важный бит здесь - это строка, которая сохраняет данные, так что вы можете просмотреть остальную часть кода.

class NextDialog(generics.GenericAPIView):
    permission_classes = (permissions.AllowAny,)

    def post(self, request, *args, **kwargs):
        data = request.data
        contact_uuid = data["contact_uuid"]
        step = data["step"]
        value = data["value"]
        optionId = data["optionId"]
        path = get_path(data)
        request = build_rp_request(data)
        app_response = post_to_app(request, path)
        response_data = AppAssessment(contact_uuid, step, value, optionId)
        response_data.save()
        try:
            report_path = app_response["_links"]["report"]["href"]
            response = get_report(report_path)
            return Response(response, status=status.HTTP_200_OK)
        except KeyError:
            pass
        message = format_message(app_response)
        return Response(message, status=status.HTTP_200_OK)

Модель:

class AppAssessment(models.Model):
    contact_uuid = models.CharField(max_length=255)
    step = models.IntegerField(null=True)
    optionId = models.IntegerField(null=True, blank=True)
    user_input = models.TextField(null=True, blank=True)
    title = models.TextField(null=True, blank=True)
    # description = models.TextField(null=True, blank=True)

    def __str__(self):
        return self.contact_uuid

Когда строка response_data.save() выполняется в представлении, я получаю следующую ошибку:

  File "/home/osboxes/ndoh-hub/venv/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 972, in get_prep_value
    return int(value)
ValueError: invalid literal for int() with base 10: '49548747-48888043'

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

замените эту строку:

response_data = AppAssessment(contact_uuid, step, value, optionId)

с этим:

response_data = AppAssessment(contact_uuid=contact_uuid, step=step, optionId=optionId, user_input=value)

Я не уверен, для какого атрибута вы хотели использовать value, но думаю, что это был user_input.

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