我收到此错误: /product/ 处的值错误 精确查找的 QuerySet 值必须使用切片限制为一个结果。
这是我的模型:
class Categorie (models.Model):
title = models.CharField(max_length=50)
category_slug = models.SlugField(blank=True)
def __str__(self):
return self.category_slug
class Products(models.Model):
category = models.ForeignKey(Categorie,on_delete=models.CASCADE,null=True,
related_name="product")
product_slug = models.SlugField(blank=True)
product_title = models.CharField(max_length=50 , null=True)
product_name = models.CharField(max_length=100 , null=True )
product_describe = models.CharField(max_length=200 , null=True)
product_picture = models.ImageField(upload_to='img_pro' , null=True)
product_created_at = models.DateField(auto_now_add=True)
product_updated_at = models.DateField(auto_now=True)
def __str__(self):
return self.product_slug
这是我的观点:
def index(requset):
category = Categorie.objects.all()
product = Products.objects.filter(category_slug=category)
context = {
'category':category,
'product ':product ,
}
return render( requset , 'product/index.html' , context)
这是我的模板:
{% for cat in category %}
<div class="fix single_content">
<h2>{{cat.title}}</h2>
<div class="fix">
{% for pro in product %}
<ul>
<li>
<div class="entry_name"><a href=""><img src="{{pro.product_picture.url}}" alt=""><span>
{{pro.product_title}}</span></a><h6>{{pro.product_name}}</h6></div>
</li>
</ul>
{% endfor %}
</div>
{% endfor %}
这是 myapp.urls:
from django.urls import path
from . import views
urlpatterns = [
path('' , views.index , name='index' ),
]
有人可以帮我吗?
答案 0 :(得分:0)
在您的索引视图中,您正在传递您在 vategory 中的所有内容
category = Categorie.objects.all()
虽然它只期待一件事
category = Categorie.objects.get(id=pk) # pk or category_id or slug or whatever you named it in your url
所以你的视图应该看起来像
def index(requset,pk):
category = Categorie.objects.get(id=pk)
product = Products.objects.filter(category=category)
context = {
'category':category,
'product ':product ,
}
return render( requset , 'product/index.html' , context)
答案 1 :(得分:0)
如果您想获得单个类别的产品,请使用:
category = Categorie.objects.filter(category_slug='<slug-to-search>').first()
product = Products.objects.filter(category=category)
但是如果您想要多个类别的产品,请使用此:
categories = Categorie.objects.all()
products = Products.objects.filter(category__in=categories)