代码之家  ›  专栏  ›  技术社区  ›  gath

在Django中,如何返回与模型相关的项目总数?

  •  1
  • gath  · 技术社区  · 16 年前

    在Django中,我如何返回与另一个模型相关的项目总数(计数),例如StackOverflow处理问题列表的方式,然后在旁边显示与该问题相关的答案的计数。

    如果我得到questionid,这很容易,我可以返回与该问题相关的所有答案,但是当显示整个问题列表时,在显示总计数的一侧显示该计数会变得有点困难。

    我不知道是否清楚,但想想stackoverflow是如何用答案显示问题的,视图数在每个问题旁边!

    2 回复  |  直到 16 年前
        1
  •  1
  •   Simon Willison    16 年前

    如果您愿意使用trunk,可以利用一周左右前添加的全新annotate()queryset方法,从而解决这个确切的问题:

    http://docs.djangoproject.com/en/dev/topics/db/aggregation/

    如果您想坚持使用django 1.0,可以使用extra()queryset方法的select参数,以稍微不那么优雅的方式实现这一点。这里有一个使用extra()的例子:

    http://docs.djangoproject.com/en/dev/ref/models/querysets/#extra-select-none-where-none-params-none-tables-none-order-by-none-select-params-none

    最后,如果您需要这一点来实现真正的高性能,可以将中的计数非规范化为单独的列。在我演示的单元测试部分,我有一些如何做到这一点的示例:

    http://www.slideshare.net/simon/advanced-django

        2
  •  5
  •   sastanin    16 年前

    QuerySet.count()

    也见 example 如何建立相关模型的查询集。