Запрос OrderItem, соответствующий запросу, не существует, при попытке добавить товар в корзину
Я пытаюсь добавить в корзину один товар, но столкнулся с проблемой и теперь застрял, я пробовал разные способы, но ни один из них не сработал. Пожалуйста, помогите, так как я пытаюсь изучить django. Я приложил функцию add_to_cart, urls.py и трассировку ошибки. Между функциями я добавил функцию print, она говорит - Internal Server Error(maybe)
просмотров
@login_required
def add_to_cart(request, slug):
item = AffProduct.objects.get(slug=slug)
order_item = OrderItem.objects.get(
item=item,
user=request.user,
ordered=False
)
for i in order_item:
print(i)
else:
print("No orders in here")
order_qs = Order.objects.filter(user=request.user, ordered=False)
if order_qs.exists():
order = order_qs[0]
# check if the order item is in the order
if order.items.filter(item__slug=item.slug).exists():
order_item.quantity += 1
order_item.save()
messages.info(request, "This item quantity was updated.")
return redirect("detailview")
else:
order.items.add(order_item)
messages.info(request, "This item was added to your cart.")
return redirect("detailview")
else:
ordered_date = timezone.now()
order = Order.objects.create(
user=request.user, ordered_date=ordered_date)
order.items.add(order_item)
messages.info(request, "This item was added to your cart.")
return redirect("detailview")
Здесь urls.py:
path('cart/', views.cart, name='cart'),
path('add-to-cart/<str:slug>/', add_to_cart, name='add-to-cart'),
Это мой cart.html:
Следствие следующее:
Internal Server Error: /onlineshopping/add-to-cart/hp-14-202/
Traceback (most recent call last):
File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\user\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\user\AppData\Local\Programs\Python\Python39\lib\site-packages\django\contrib\auth\decorators.py", line 21, in _wrapped_view
return view_func(request, *args, **kwargs)
File "C:\blink\myblink\onlineshopping\views.py", line 127, in add_to_cart
order_item = OrderItem.objects.get(
File "C:\Users\user\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\user\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\query.py", line 435, in get
raise self.model.DoesNotExist(
onlineshopping.models.OrderItem.DoesNotExist: OrderItem matching query does not exist.
[10/Aug/2021 16:27:25] "GET /onlineshopping/add-to-cart/hp-14-202/ HTTP/1.1" 500 78902
Ваш код выдает ошибку, поэтому, вероятно, в вашей базе данных нет элементов заказа, которые вы хотите получить.
решение 1: обработайте запрос с помощью try и catch.
try:
order_item = OrderItem.objects.get(
item=item,
user=request.user,
ordered=False
)
except:
order_item = None
решение 2:
fire filter query rather than get bcoz if get not found any item match with the condition it will throw an error but filter return none if there is not matching data found