【发布时间】:2021-09-18 17:54:27
【问题描述】:
在创建 cart_update 函数时,我是按照 Udemy Python/Django 电子商务教程进行编程的新手。我在下面遇到了这个错误。我在模型中使用 ForeignKey 作为用户。有人可以解释我做错了什么吗?以及我应该如何考虑这种错误?
在此先感谢 SO 社区
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
import random, os
from django.db import models
from django.db.models import Q
from django.db.backends.base import features
from django.db.models.fields import SlugField
from django.contrib.auth.models import User
from django.db.models.signals import pre_save, post_save
from django.urls import reverse
from .utls import unique_slug_generator
class ProductManager(models.Manager):
def featured(self):
return self.get_queryset().filter(featured=True)
def get_by_id(self, id):
qs = self.get_queryset().filter(id=id) # Product.objects == self.get.queryset()
if qs.count() == 1:
return qs.first()
return None
def search(self, query):
lookups = Q(title__icontains=query) | Q(description__icontains=query) |Q(price__icontains=query) |Q(tag__title__icontains=query)
return self.get_queryset().filter(lookups).distinct()
class Product(models.Model):
title =models.CharField(max_length=120)
slug =models.SlugField(blank=True, unique=True)
description =models.TextField()
price =models.DecimalField(decimal_places=2, max_digits=6, default=0.00)
image =models.ImageField(upload_to=upload_image_path, null=True, blank=True)
featured =models.BooleanField(default=False)
obj = ProductManager()
objects = models.Manager()
def __str__(self):
return self.title
def get_absolute_url(self):
return "/inventory/{slug}/".format(slug=self.slug)
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_id=1的产品。 -
对不起,我上传了错误的models.py文件
-
但是模型在这里无关紧要:你在上一行使用了`product_obj = Product.objects.get(id=product_id)`和
product_id=1,所以你用主键获取Product等于一,但不存在这样的Product记录。 -
谢谢!!我花了一段时间才弄清楚事情,阅读了很多文档。在接下来的几天里寻找那杯咖啡!
标签: python python-3.x django