Python 使用ListView计算对象数
我尝试在模板中返回用于销售的计数寄存器。 我使用ListView。我需要一份销售记录 我试着 但不是工作 如何返回销售计数登记簿?尝试Python 使用ListView计算对象数,python,django,django-templates,Python,Django,Django Templates,我尝试在模板中返回用于销售的计数寄存器。 我使用ListView。我需要一份销售记录 我试着 但不是工作 如何返回销售计数登记簿?尝试 class SaleList(ListView): template_name = 'sale_list.html' model = Sale context_object = 'sale_list' paginate_by = 10 def get_context_data(self, **kwargs):
class SaleList(ListView):
template_name = 'sale_list.html'
model = Sale
context_object = 'sale_list'
paginate_by = 10
def get_context_data(self, **kwargs):
context = super(SaleList, self).get_context_data(**kwargs)
context['count'] = self.get_queryset().count()
return context
如果模板
{{ count }}
您不需要
get\u计数器
函数,甚至不需要覆盖get\u上下文函数
ListView将使用对象列表
(或者在您的情况下,销售列表
)调用模板,这是一个查询集,因此您只需直接从模板访问count()
函数即可
因此,只需在模板上使用以下内容:
{{ sales_list.count }}
解决此问题的更好方法是使用:
{{ page_obj.paginator.count }}
这避免了仅仅为了获取计数而再次访问数据库,该计数已在
页面中提供,非常乐意提供帮助。:)关于您的解决方案-问题,然后您调用对象的方法,但ListView将对象发送到模板列表。如果您在模板中收到对象列表,需要写入{{object\u list.0.get\u counter}(需要使用一个对象),我注意到这个解决方案添加了一个额外的数据库查询来检索总计数(通过Django调试工具栏)。有什么方法可以避免对数据库造成额外的影响吗?下面是我上面问题的解决方案:{{page_obj.paginator.count}}但是当我们添加以下代码``context['count']=self.get_queryset().count()``时,它会再次调用queryset。我们有其他解决方案吗?我使用分页,sales_list.count只返回此渲染项。对于我使用的所有寄存器,获取上下文数据。但是谢谢你,谢谢你!你节省了我一半的工作时间。我认为这个回答应该被标记为答案
{{ page_obj.paginator.count }}