Как реализовать функцию для удаления всех товаров из корзины (django)

Эй, ребята, я сделал сайт на django и в нем есть функция корзины. Сейчас я реализовал функцию, которая позволяет удалять товары, но она удаляет их только по одному. Я застрял на том, как сделать так, чтобы функция удаляла все товары, находящиеся в корзине

cart.html

{% for cart_item in cart_item %}
    {% if cart_item.quantity < cart_item.product.stock %}
        <a <a href="{% url 'cart:full_remove' cart_item.product.id %}" class="custom_icon"><i class="fas fa-trash-alt custom_icon"></i></a>
    {% endif %}
{% endfor %}

cart urls.py

from os import name
from django.urls import path
from . import views

app_name='cart'

urlpatterns = [
    path('add/<uuid:product_id>/', views.add_cart, name='add_cart'),
    path('', views.cart_detail, name='cart_detail'),
    path('remove/<uuid:product_id>/', views.cart_remove, name='cart_remove'),
    path('full_remove/<uuid:product_id>/', views.full_remove, name='full_remove'),
]

cart views.py

def full_remove(request, product_id):
    cart = Cart.objects.get(cart_id=_cart_id(request))
    product = get_object_or_404(Product, id=product_id)
    cart_item = CartItem.objects.get(product=product, cart=cart)
    cart_item.delete()
    return redirect('cart:cart_detail')

Ваше представление использует get, который возвращает тот CartItem, который подходит product=product, cart=cart, если их несколько - get вызовет исключение и завершится неудачей.

Но чтобы удалить все товары в корзине, вы можете игнорировать id товара:

def full_remove(request): # Update urls.py so product_id is not needed.
    cart = Cart.objects.get(cart_id=_cart_id(request))
    cart_items = CartItem.objects.filter(cart=cart) # Filter all items in cart
    cart_items.delete()
    return redirect('cart:cart_detail')

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