如何计算 Django 模板中的产品?
Posted
技术标签:
【中文标题】如何计算 Django 模板中的产品?【英文标题】:How to count products in Django template? 【发布时间】:2020-11-12 18:14:43 【问题描述】:我是按类别获取产品,我想以Showing Products 1-24 of 10 Result
这种格式显示计数后的产品,我的产品是按类别显示的,请告诉我如何在计数后显示产品在那个类别中。这意味着如果一个类别有 20 个产品,那么它将在我的产品列表页面上显示 20 product
。
class SubCategory(models.Model):
subcat_name=models.CharField(max_length=225)
subcat_slug=models.SlugField(max_length=225, unique=True)
category = models.ForeignKey('Category', related_name='subcategoryies', on_delete=models.CASCADE, blank=True, null=True)
这是我的产品 models.py 文件...
class Product(models.Model):
name=models.CharField(max_length=225)
slug=models.SlugField(max_length=225, unique=True)
subcategory=models.ForeignKey('SubCategory', related_name='prosubcat', on_delete=models.CASCADE, blank=True, null=True)
def __str__(self):
return self.name
这是我的model.py
文件代码...
def SubCategorySlugListAPIView(request, subcat_slug):
subcategories = SubCategory.objects.all()
product = Product.objects.all()
if subcat_slug:
subcategory = get_object_or_404(SubCategory, subcat_slug=subcat_slug)
productlist = product.filter(subcategory=subcategory)
paginator = Paginator(productlist, 12)
page_number = request.GET.get('page')
product = paginator.get_page(page_number)
template_name = 'mainpage/cat-products.html'
context = 'product': product,
'subcategories': subcategories, 'subcategory': subcategory
return render(request, template_name, context)
这是我的cat-products.html
文件...
<div class="search-count">
<h5>Showing Products product.count</h5>
</div>
这里没有显示,请告诉我如何在此处显示产品数量。
【问题讨论】:
【参考方案1】:试着像这样改变你的观点。
def SubCategorySlugListAPIView(request, subcat_slug):
subcategories = SubCategory.objects.all()
subcategory = get_object_or_404(SubCategory, subcat_slug=subcat_slug)
productlist = Product.objects.filter(subcategory=subcategory)
paginator = Paginator(productlist, 12)
page_number = request.GET.get('page')
product = paginator.get_page(page_number)
template_name = 'mainpage/cat-products.html'
context = 'product': product,
'subcategories': subcategories, 'subcategory': subcategory
return render(request, template_name, context)
或者你也可以在模板中使用这个。
<h5>Showing Products subcategory.prosubcat.all.count</h5>
编辑:在这里我可以看到你正在使用paginator
,所以你可以这样做。
Showing products product.start_index - prodct.end_index of product.count results.
有关分页的更多详细信息,请参阅docs。
【讨论】:
完美答案,但它显示的是Showing Products 20
,我想要这样的Showing Products 1-12 of 20 Result
你解决了我的问题,你能不能也解决这个问题***.com/questions/63046835/…
完成了,我如何在 *** 旁边的评论部分与你聊天
嗨,Arjun,你能解决这个问题吗...***.com/questions/63781362/…【参考方案2】:
您可以使用 Django 的 count 函数,然后将其作为视图的一部分传递。
像这样使用它
context = 'count': Product.objects.count()
然后它应该返回您的查询集中有多少产品。那么,在您的 HTML 文件中,您可以简单地将其呈现为
<div class="search-count">
<h5>Showing Products count </h5>
</div>
编辑
在查看了您的样本后,我认为应该是
Product.objects.filter(subcategory=subcat_slug).count()
【讨论】:
它在计算数据库产品总数,但我想计算特定类别的产品... 也许是Products.objects.filter(category=subcat_slug).count()
?您可以将这些功能混合在一起,因为在过滤产品后,它仍然是一个查询集对象。
我做到了,但它显示了这个错误object of type 'int' has no len()
`
您能告诉我您是如何使用我的代码的吗?如果您尝试将其解析为len(Products.object.filter...)
,请删除len
,因为.count()
已经返回长度。
我用过这个productlist = Product.objects.filter(subcategory=subcategory).count()
,请查看我上面的视图文件以上是关于如何计算 Django 模板中的产品?的主要内容,如果未能解决你的问题,请参考以下文章