DJANGO: Product matching query does not exist
Не пойму в чём дело.
Выбивает ошибку:
Request URL: http://127.0.0.1:8000/products/basket-add/12/
Django Version: 3.2.4
Exception Type: DoesNotExist
Exception Value:
Product matching query does not exist.
Добавляю элемент так:
def basket_add(request, product_id):
current_page = request.META.get('HTTP_REFERER')
product = Product.objects.get(id=product_id)
baskets = Basket.objects.filter(user=request.user, product=product)
if not baskets.exists():
Basket.objects.create(user=request.user, product=product, quantity=1)
return HttpResponsePermanentRedirect(current_page)
else:
basket = baskets.first()
basket.quantity += 1
basket.save()
return HttpResponsePermanentRedirect(current_page)
Удаляю
def basket_delete(request, id):
basket = Basket.objects.get(id=id)
basket.delete()
return HttpResponsePermanentRedirect(request.META.get('HTTP_REFERER'))
В шаблоне:
<a href="{% url 'products:basket_delete' basket.id %}" style="text-decoration: none; color: gray;">
<i class="far fa-trash-alt"></i>
</a>
URLs:
from django.urls import path
from products.views import products, basket_add, basket_delete
app_name = 'products'
urlpatterns = [
path('', products, name="index"),
path('basket-add/<int:product_id>/', basket_add, name="basket_add"),
path('basket-add/<int:id>/', basket_delete, name="basket_delete"),
]
Модели (на всякий случай все скинул, мало ли где то ранее накосячил)
from django.db import models
from users.models import User
class ProductCategory(models.Model):
name = models.CharField(max_length=64, unique=True)
description = models.TextField(blank=True)
class Meta:
verbose_name_plural = "Product Categories"
def __str__(self):
return self.name
class Product(models.Model):
name = models.CharField(max_length=256)
image = models.ImageField(upload_to='products_images', blank=True)
description = models.TextField(blank=True)
short_description = models.CharField(max_length=64, blank=True)
price = models.DecimalField(max_digits=8, decimal_places=2, default=0)
quantity = models.PositiveIntegerField(default=0)
category = models.ForeignKey(ProductCategory, on_delete=models.CASCADE)
def __str__(self):
return f"{self.name} ({self.category.name})"
class Basket(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
quantity = models.PositiveIntegerField(default=0)
created_timestamp = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"Корзина для {self.user.username} | Продукт {self.product.name}"
Делаю точно по курсам, всё 1 в 1 (единственное, что версия джанги старее) и такое.
