如何计算 Django 模板中的产品?
How to count products in Django template?
我正在按类别获取产品,我想以这种格式显示计数后的产品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>
这里没有显示,请告诉我如何在这里显示产品数量。
您可以使用 Django 的 count 函数,然后将其作为视图的一部分传递。
像使用它
context = {'count': Product.objects.count()}
然后它应该 return 您的查询集中有多少产品。那么,在您的 HTML 文件中,您可以简单地将其呈现为
<div class="search-count">
<h5>Showing Products {{ count }}</h5>
</div>
编辑
看了你的样品,我觉得应该是
Product.objects.filter(subcategory=subcat_slug).count()
试着像这样改变你的看法。
def SubCategorySlugListAPIView(request, subcat_slug):
subcategories = SubCategory.objects.all()
subcategory = get_object_or_404(SubCategory, subcat_slug=subcat_slug)
<b>productlist = Product.objects.filter(subcategory=subcategory)</b>
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)</pre>
或者你也可以用这个在模板中完成。
<h5>Showing Products {{subcategory.prosubcat.all.count}}</h5>
编辑: 在这里我可以看到你正在使用 paginator
所以你可以这样做。
Showing products {{product.start_index}} - {{prodct.end_index}} of {{product.count}} results.
有关分页的详细信息,请参阅 docs。
我正在按类别获取产品,我想以这种格式显示计数后的产品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>
这里没有显示,请告诉我如何在这里显示产品数量。
您可以使用 Django 的 count 函数,然后将其作为视图的一部分传递。
像使用它
context = {'count': Product.objects.count()}
然后它应该 return 您的查询集中有多少产品。那么,在您的 HTML 文件中,您可以简单地将其呈现为
<div class="search-count">
<h5>Showing Products {{ count }}</h5>
</div>
编辑
看了你的样品,我觉得应该是
Product.objects.filter(subcategory=subcat_slug).count()
试着像这样改变你的看法。
def SubCategorySlugListAPIView(request, subcat_slug): subcategories = SubCategory.objects.all() subcategory = get_object_or_404(SubCategory, subcat_slug=subcat_slug) <b>productlist = Product.objects.filter(subcategory=subcategory)</b> 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)</pre>
或者你也可以用这个在模板中完成。
<h5>Showing Products {{subcategory.prosubcat.all.count}}</h5>
编辑: 在这里我可以看到你正在使用
paginator
所以你可以这样做。Showing products {{product.start_index}} - {{prodct.end_index}} of {{product.count}} results.
有关分页的详细信息,请参阅 docs。