DjangCounterCacheField使反规范化和跟踪相关模型计数变得非常容易。

django-counter-cache-field的Python项目详细描述


https://travis-ci.org/enjoy2000/django-counter-cache-field.svg?branch=master

通过ForeignKey缓存与另一个对象关联的对象的总数有时很有用 关系。例如,与一篇文章相关联的评论总数。在

django counter字段使反规范化和保持这些计数器为最新很容易。在

快速入门

  1. 安装django计数器字段:

    pip install django-counter-cache-field
    
  2. 将“django_counter_field”添加到已安装的应用程序设置中:

    ^{pr2}$ 在
  3. 将CounterCacheField添加到模型中:

    from django_counter_field import CounterCacheField
    
    
    class Article(models.Model):
        comment_count = CounterCacheField()
    
  4. 将相关外键字段与信号中的计数器字段连接起来:

    connect_counter('comment_count', Comment.article)
    

无论何时创建评论,关联文章上的评论数都将增加。如果评论是 删除后,注释计数将自动递减。在

概述

创建新计数器需要三个简单步骤:

  1. CounterCacheField字段添加到父模型。在
  2. CounterMixinmixin添加到子模型中。在
  3. 使用connect_counter将子模型与新计数器连接起来。在

大多数计数器都很简单,因为您希望对所有子对象进行计数。但是,有时对象应该 根据一个或几个条件计算的。例如,您可能不希望统计一篇文章中的all评论,但是 仅限已批准的评论。您可以通过提供第三个is_in_counter_func来创建条件计数器 连接计数器的参数:

connect_counter(‘comment_count’, Comment.article, lambda comment: comment.is_approved)

is_in_counter_func函数将使用Comment对象调用,并且必须返回True 应该算在内。它不必关心检查注释是否被删除,django counter字段 默认情况下会这样做。在

回填

通常,您会将CounterCacheField添加到已经有大量关联对象的模型中。当一个计数器 的值初始化为零。此值可能不正确。django counter字段提供了一对 允许您重新生成计数器值的管理命令:

  1. 列出所有可用计数器:

    $ python manage.py list_counters

  2. 使用list_counters给出的计数器名称之一重建计数器

    $ python manage.py rebuild_counter <counter_name>

注意:管理命令只更新至少有一个子对象的计数器 对象。例如至少有一条评论的文章。没有评论的文章将不会更新。这个 是一个有意识的限制;这种特性的用例似乎非常有限,如果有的话。在

文件

$ pip install Sphinx $ cd docs $ make html Open build/html/index.html

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何用java表示这个数学函数的算法   Java/Stream帮助:仅使用streams将嵌套的映射列表转换为映射   使用Selenium连接到数据库时发生java未知主机异常   java如何了解jvm内存使用:“堆内存”和“堆外内存”   java Oracle BI报告导入模板   java如何使用Spring将xml转换为bean?   java线程。join()以保证执行顺序   java从THINGSPEAK到ANDROID应用程序获取JSON数据   使用Java的stanford库中的异常   java正确使用来自其他类文件的方法   如果集合中的元素类型为接口类型,如何填充集合?(爪哇)   记录java。util。记录器创建的文件超过了应有的数量   类Java对象uniq值   尝试调用无法应用于()的方法时出现java错误