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

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


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

django counter字段使反规范化和保持此类计数器最新变得容易。

快速启动

  1. 安装django计数器字段:

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

    INSTALLED_APPS = (
        ...
        'django_counter_field',
    )
    
  3. 为您的模型添加一个反场:

    from django_counter_field import CounterField
    
    
    class Article(models.Model):
        comment_count = CounterField()
    
  4. < > >添加抗衡蛋白对相关模型:

    from django_counter_field import CounterMixin, connect_counter
    
    
    class Comment(CounterMixin, models.Model):
        article = models.ForeignKey(Article)
    
  5. 将相关外键字段与计数器字段连接:

    connect_counter('comment_count', Comment.article)
    

每当创建注释时,关联项目上的注释计数将递增。如果评论是 删除后,评论计数将自动递减。

概述

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

  1. 向父模型添加一个反字段字段。
  2. 将“CITE >反混音< /CIT> >混音添加到子模型中。
  3. 使用连接计数器将子模型与新计数器连接。

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

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

函数将用comment对象调用,如果给定的注释 应该被计算在内。它不能关注检查注释是否被删除,django counter字段 默认情况下会这样做。

回填

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

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

    $ python manage.py list_counters

  2. 使用列表计数器提供的计数器名称之一重建计数器

    $ python manage.py rebuild_counter <counter_name>

注意:重新生成计数器管理命令只更新至少有一个子对象的计数器 目标例如,至少有一条评论的文章。没有评论的文章将不会被更新。这个 是一个有意识的限制;这样的特征的使用情况似乎非常有限,如果存在的话。

文档

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

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

推荐PyPI第三方库


热门话题
日志列“\u id”中的java JSON到db创建错误不存在   在GWT中使用字符串变量作为对象的java   RESTweb服务中get方法中的java invoke post方法   使用参数类型int时,java MyBatis的列类型无效   java Android在不触发onTextChanged的情况下调用backspace   java为什么在安卓 studio中顶栏搜索不起作用?   从VB转换。net到java   Android Studio Java蓝牙Gatt连接问题   多线程Java从线程通知线程   如果在没有任何选项的情况下运行JVM,java对内存使用的影响?   Java handson使用图表进行练习   java为什么UTF8的新字符串包含更多字节   java如何使用此方法制作声音循环?   java为什么强制转换对象是多余的