请在我的答案被标记为重复之前,如果有人先通过它,我将不胜感激。 我试图在电子商务项目中访问产品页面,但是当我尝试访问的页面,我得到的值如下错误:django值错误需要多个值才能解压
Internal Server Error: /product_view/1/
Traceback (most recent call last):
File "/home/agozie/anaconda3/envs/env1/lib/python2.7/site-packages/django/core/handlers/exception.py", line 41, in inner
response = get_response(request)
File "/home/agozie/anaconda3/envs/env1/lib/python2.7/site-packages/django/core/handlers/base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/agozie/anaconda3/envs/env1/lib/python2.7/site-packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/agozie/shoppingmall/shop/views.py", line 15, in product_view
p = get_object_or_404(Product, product_slug)
File "/home/agozie/anaconda3/envs/env1/lib/python2.7/site-packages/django/shortcuts.py", line 85, in get_object_or_404
return queryset.get(*args, **kwargs)
File "/home/agozie/anaconda3/envs/env1/lib/python2.7/site-packages/django/db/models/query.py", line 371, in get
clone = self.filter(*args, **kwargs)
File "/home/agozie/anaconda3/envs/env1/lib/python2.7/site-packages/django/db/models/query.py", line 784, in filter
return self._filter_or_exclude(False, *args, **kwargs)
File "/home/agozie/anaconda3/envs/env1/lib/python2.7/site-packages/django/db/models/query.py", line 802, in _filter_or_exclude
clone.query.add_q(Q(*args, **kwargs))
File "/home/agozie/anaconda3/envs/env1/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1250, in add_q
clause, _ = self._add_q(q_object, self.used_aliases)
File "/home/agozie/anaconda3/envs/env1/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1276, in _add_q
allow_joins=allow_joins, split_subq=split_subq,
File "/home/agozie/anaconda3/envs/env1/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1151, in build_filter
arg, value = filter_expr
ValueError: need more than 1 value to unpack
[13/Aug/2017 19:07:23] "GET /product_view/1/ HTTP/1.1" 500 104231
我已经经历了所有其他问题,有关我的,但他们都已经走与分割代码有关。
这里是我的models.py:
class Product(models.Model):
name = models.CharField(max_length=50)
slug = models.SlugField(max_length=50, unique=True)
color_id = models.ManyToManyField(Color)
gender = models.CharField(max_length=2,choices=(('M','Male'),('F','Female')))
brand_id = models.ManyToManyField(Brand)
image = models.ImageField(upload_to='product_images',blank=False)
features = models.TextField()
quantity = models.IntegerField(default=0)
style = models.ManyToManyField(Style)
sub_category_id = models.ForeignKey(Sub_Category)
old_price = models.DecimalField(max_digits=15, decimal_places=2, blank=True, default=0.00)
price = models.DecimalField(max_digits=15,decimal_places=2, null=False)
availability = models.BooleanField(default=False)
retailer_id = models.ForeignKey(Retailer)
shipping_cost= models.IntegerField(default=1000)
categories = models.ManyToManyField(Category)
created_at = models.DateTimeField(auto_now=True)
def save(self, *args, **kwargs):
# self.author = self.author.upper()
self.slug = slugify(self.name)
super(Product, self).save(*args,**kwargs)
def __str__(self):
return self.name
@models.permalink
def get_absolute_url(self):
return('shop_product',(), {'product_slug':'self.slug'})
def sale_price(self):
if self.old_price > self.price:
return self.price
else:
return None
而下面是我的views.py:
def product_view(request, product_slug):
p = get_object_or_404(Product, product_slug)
categories = p.categories.filter(is_active=True)
return render(request,'shop/product_view.html')
我使用Django 1.11和Python 2.7.13
谢谢,看来它的工作,但现在显示我没有产品匹配给定的查询。 – Gozie
您可以在视图中打印'product_slug'参数并查看它的外观? – wencakisa
对不起,我不明白。打印它如何? – Gozie