Django: "Продукта, соответствующего запросу, не существует."?

Я новичок в программировании, изучаю учебник по электронной коммерции Udemy Python/Django при создании функции cart_update. Я столкнулся с нижеприведенной ошибкой. Я использовал ForeignKey для пользователя в своих моделях. Может ли кто-нибудь объяснить, что я делаю неправильно; и как я должен думать о такого рода ошибках в дальнейшем?

заранее спасибо SO communinty

DoesNotExist at /cart/update/
Product matching query does not exist.

/Users/duce/Sites/RENUecommerce/src/carts/views.py, line 20, in cart_update
    product_obj = Product.objects.get(id=product_id) …

views.py

from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.models import User
from inventory.models import Product
from .models import Cart


def cart_update(request):
    product_id = 1
    product_obj = Product.objects.get(id=product_id)
    #product_obj = get_object_or_404(Product, id=product_id)
    
    cart_obj, new_obj = Cart.objects.new_or_get(request)
    cart_obj.products.add(product_obj)
    return redirect('cart:update')

models.py

from django.conf import settings
from django.db import models
from django.db.models.signals import pre_save, post_save, m2m_changed
from inventory.models import Product



User = settings.AUTH_USER_MODEL

class CartManager(models.Manager):
    def new_or_get(self, request):
        cart_id = request.session.get('cart_id', None)
        qs = self.get_queryset().filter(id=cart_id)
        if qs.count() == 1:
            new_obj = False
            cart_obj = qs.first()
            if request.user.is_authenticated and cart_obj.user is None:
                cart_obj.user = request.user
                cart_obj.save()
        else:
            cart_obj = Cart.objects.new(user=request.user)
            new_obj = True
            request.session['cart_id'] = cart_obj.id
        return cart_obj, new_obj

    def new(self, user=None):
        print(user)
        user_obj = None
        if user is not None:
            if user.is_authenticated:
                user_obj = user
        return self.model.objects.create(user=user_obj)


class Cart(models.Model):
    user        =models.ForeignKey(User, null=True, blank=True, on_delete=models.CASCADE)
    products    =models.ManyToManyField(Product, blank=True)
    subtotal    =models.DecimalField(default=0.00, max_digits=100, decimal_places=2)
    total       =models.DecimalField(default=0.00, max_digits=100, decimal_places=2)
    updated     =models.DateTimeField(auto_now=True)
    timestamp   =models.DateTimeField(auto_now_add=True)

    objects = CartManager()
    
    def __str__(self):
        return str(self.id)

urls.py

from django.urls import path, re_path

from .views import(
     cart_home, 
     cart_update,
)

app_name = 'cart'

urlpatterns = [
    path('', cart_home, name='home'),
    path('update/', cart_update, name='update'),
]
,,,

Причина, по которой вы получаете сообщение: "Запрос, соответствующий продукту, не существует."

Это из-за кода: "product_obj = Product.objects.get(id=product_id)"

В модели Product нет строки с ID = 1. Вам сначала нужно создать 2 элемента Product, прежде чем вы сможете получить продукт с ID 1, кстати, это не лучший способ получить объект по его ID, если вы не знаете, какой продукт имеет ID 1.

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