Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用ListView计算对象数_Python_Django_Django Templates - Fatal编程技术网

Python 使用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):

我尝试在模板中返回用于销售的计数寄存器。 我使用ListView。我需要一份销售记录

我试着

但不是工作

如何返回销售计数登记簿?

尝试

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 }}