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什么会导致程序在它似乎拥有的监视器上被阻止?   java Android studio设置视图的背景色   java我可以保存一个文本文件而不给用户修改它的能力吗?   pdfbox PDFBOX2。0:java堆堆栈错误   java是维护和操作AllowList的有效方法   JAVAsql。SQLException:找不到适合jdbc的驱动程序:mysql://localhost:3306/asd性爱   如何使用java。lang.NullPointerException:void 安卓。支持v7。应用程序。ActionBar。setElevation(float)“”在空对象引用上'   java调试空指针异常   java正则表达式,以按令牌的特定匹配项拆分,同时忽略其他匹配项   java为JPanel设置边框上的笔划   并发@Schedule方法的java行为   如何在Java中使用泛型与语言运算符和泛型类扩展数   java Rhino Javascript如何为异常堆栈跟踪标记字符串源   运行可执行jar时发生java错误,无法找到或加载主类