Django Python - функция .get возвращает DoesNotExist, если запрос не существует
Я действительно зашел в тупик со следующей проблемой... Я пытаюсь получить номер заказа после принятия платежа через Stripe. Stripe возвращает сообщение о завершении платежа и все работает, на странице успеха я вызываю функцию ниже, чтобы получить номер заказа из таблицы сессии.
Странно то, что, хотя он выдает ошибку DoesNotExist, он находит правильный номер заказа и возвращает номер заказа, и все данные действительно обслуживаются.
Функция
def get_order_number(session_id):
order = session_order_table.objects.get(session_id=session_id)
order_number = order.order_number
return order_number
функция страницы успеха
def success_page(request):
summary_orders = None
session_id = request.session["USER_SESSION_ID"]
order_number = get_order_number(session_id)
print('###############SESSION_ID######################')
print(session_id)
print(order_number)
online_order = My_Cart_History_Model.objects.filter(order_number=order_number)
....
error
1820bd97c5"\n },\n "type": "payment_intent.succeeded"\n}'
1x 777 test (Quality:VVS, Size: L, Color: yellow-gold)
C:\Users\akram\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\fields\__init__.py:1416: RuntimeWarning: DateTimeField My_Cart_History_Model.transaction_date received a naive datetime (2021-12-31 07:21:41) while time zone support is active.
warnings.warn("DateTimeField %s received a naive datetime (%s)"
Internal Server Error: /cart/my_webhook_view/
Traceback (most recent call last):
File "C:\Users\akram\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\akram\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\akram\AppData\Local\Programs\Python\Python39\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
File "D:\pwl-server\django\t7\cart\views.py", line 533, in my_webhook_view
fulfil_order(request=request ,payload=payload,session=session)
File "D:\pwl-server\django\t7\cart\views.py", line 594, in fulfil_order
return success_page(request=request)
File "D:\pwl-server\django\t7\cart\views.py", line 677, in success_page
order_number = get_order_number(session_id)
File "D:\pwl-server\django\t7\cart\views.py", line 667, in get_order_number
order = session_order_table.objects.get(session_id=session_id)
File "C:\Users\akram\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Users\akram\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\query.py", line 435, in get
raise self.model.DoesNotExist(
cart.models.session_order_table.DoesNotExist: session_order_table matching query does not exist.
[31/Dec/2021 08:21:41] "POST /cart/my_webhook_view/ HTTP/1.1" 500 129026
-->> charge.succeeded
[31/Dec/2021 08:21:41] "POST /cart/my_webhook_view/ HTTP/1.1" 200 0
-->> checkout.session.completed
[31/Dec/2021 08:21:41] "POST /cart/my_webhook_view/ HTTP/1.1" 200 0
###############SESSION_ID######################
88b75c8c-c606-4d14-a3d3-25b09348bd8c
101108688771034396
[31/Dec/2021 08:21:45] "GET /cart/success_page/ HTTP/1.1" 200 14899
Я попробовал использовать метод filter, хотя я не согласен, что его следует использовать. Когда я это делаю, он говорит, что у нетипа нет атрибута order_number, даже если я выбрал его с помощью .first()
Я проверил, что находится в базе данных и что ищется, все выглядит идеально. Функция get не должна давать сбоев.
Любая помощь будет оценена по достоинству
Возможно, вам нужно проверить ваш файл models.py, где есть связь между заказом и сессией. Также, в методе "filter". вы можете добавить блок "if order:" перед получением части order.order_number.