Django Counter Field的Python3叉子
django-counter-field-py3的Python项目详细描述
通过foreignkey缓存与另一个对象关联的对象总数有时很有用 关系。例如,与文章关联的评论总数。
django counter字段使反规范化和保持此类计数器最新变得容易。
快速启动
安装django计数器字段:
pip install django-counter-field-py3
将“django_counter_field”添加到已安装的应用程序设置中:
INSTALLED_APPS = ( ... 'django_counter_field_py3', )
为您的模型添加一个反场:
from django_counter_field_py3 import CounterField class Article(models.Model): comment_count = CounterField()
< > >添加抗衡蛋白对相关模型:将相关外键字段与计数器字段连接:
connect_counter('comment_count', Comment.article)
from django_counter_field_py3 import CounterMixin, connect_counter class Comment(CounterMixin, models.Model): article = models.ForeignKey(Article)
每当创建注释时,关联项目上的注释计数将递增。如果评论是 删除后,评论计数将自动递减。
概述
创建新计数器需要三个简单步骤:
- 向父模型添加一个反字段字段。
- 将“CITE >反混音< /CIT> >混音添加到子模型中。
- 使用连接计数器将子模型与新计数器连接。
大多数计数器都很简单,因为您希望计算所有子对象。然而,有时对象应该是 根据一个或几个条件计算。例如,您可能不希望计算对一篇文章的all评论,但是 只有已批准的评论。您可以通过在计数器函数中提供第三个is函数来创建条件计数器。 连接计数器的参数
connect_counter(‘comment_count’, Comment.article, lambda comment: comment.is_approved)
函数将用comment对象调用,如果给定的注释 应该被计算在内。它不能关注检查注释是否被删除,django counter字段 默认情况下会这样做。
回填
通常,您会将反字段添加到已经具有大量关联对象的模型中。当一个计数器 它的值被初始化为零。此值可能不正确。django counter字段提供了一对 允许您重新生成计数器值的管理命令:
列出所有可用计数器:
$ python manage.py list_counters
使用列表计数器提供的计数器名称之一重建计数器
$ python manage.py rebuild_counter <counter_name>
注意:重新生成计数器管理命令只更新至少有一个子对象的计数器 反对。例如,至少有一条评论的文章。没有评论的文章将不会被更新。这个 是一个有意识的限制;这样的特征的使用情况似乎非常有限,如果存在的话。
文档
$ pip install Sphinx $ cd docs $ make html Open build/html/index.html