如何从Django中的方法正确返回值?

时间:2016-06-18 16:44:15

标签: django function return

我试图编写一个方法来对我的"页面中的view_count值进行求和"在模型中,但由于某种原因,我在模板上得到的结果是以奇怪的方式编写的Overall views: {'view_count__sum': 9}

该模型如下所示:

class Page(models.Model):
        name = models.CharField(max_length=20, primary_key=True)
        content = models.TextField(blank=True)
        view_count = models.IntegerField (default= 0)
        edits = models.IntegerField(default=0)

这是我的视图片段,其中我尝试为我的模板定义上下文方法:

def context_count(request):
    page_count = Page.objects.count()
    tracker = Page.objects.all().aggregate(Sum(F('view_count'), output_field=IntegerField()))
    def __str__(self):
        return self.tracker
    return { 'page_quantity':page_count, 'page_viewcount':tracker}

为了确保我完全填满你,这是我的模板用来显示变量的代码行

<p>
    Overall views: {{page_viewcount}}
</p>

我意识到我已经跳过了一些基本的东西,但我感谢我对此有任何意见。

1 个答案:

答案 0 :(得分:1)

来自Django docs

  

aggregate()是QuerySet的终止子句,在调用时,   返回名称 - 值对字典

tracker是一本字典。所以你需要回复:

return { 'page_quantity':page_count, 'page_viewcount':tracker['view_count__sum'] }