Django Counter Field的Python3叉子

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


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

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

快速启动

  1. 安装django计数器字段:

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

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

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

    from django_counter_field_py3 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第三方库


热门话题
java Kafka DSL Kstream>Ktable连接序列化编译错误   java为什么Bean A中的参数注入会破坏属性解析Bean B?(都是类型PropertyPlaceHolderConfigure的类型)   java Oracle SQL开发人员在尝试导出数据时调用TargetException   编辑JTree中返回的java意外值   Java,Lambda:如何从不同类型的列表集合中查找列表?   如何使用java执行命令   java如何将drawable分配给widgets按钮   JavaIntelliJ13JSF对Springbeans的支持   java转换。转换成补语   java Tomcat的性能测试   sendmail Java发送邮件函数   java重用ProjectReactor/Flux/Mono被认为是最佳实践吗?   javafx在Java中错误地转换为lambda表达式   反序列化json数组,其中属性值为数组java   java After ItemClickListener调用方法   此Java代码中有多少对象符合垃圾收集条件?   java程序“keytool”可以在以下包中找到