Запрос 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

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