【问题标题】:In Django how do i return the total number of items that are related to a model?在 Django 中,我如何返回与模型相关的项目总数?
【发布时间】:2010-10-02 22:01:09
【问题描述】:

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

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

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

【问题讨论】:

  • 如果您提供模型示例,我可以提供帮助。
  • “它变得有点棘手”我假设你的意思是你想避免单独查询每个问题的答案计数?在这种情况下,您将需要下面的汇总答案。
  • -1:没有代码示例。如果没有某种 sn-p 或示例或“我希望它像这样工作”或有形的东西,很难提供帮助。

标签: python django


【解决方案1】:

QuerySet.count()

另请参阅example 如何构建相关模型的查询集。

【讨论】:

    【解决方案2】:

    如果你愿意使用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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      • 2010-09-21
      • 2016-04-01
      • 1970-01-01
      相关资源
      最近更新 更多