提供自动creator/editor/datetime_created/datetime_modified字段的抽象基类。

django-audited-models的Python项目详细描述


Author:Chris Chambers
Date:2012/05/08

django审计模型提供了一个简单的抽象基类(和工厂 函数)用于跟踪数据库记录的创建和修改时间,如 以及记录的创建者和最后一个编辑它的用户。它利用 两个可插拔应用程序可实现此功能:

  1. Django Extensions,它提供了(除许多其他外)一个 CreationDateTimeFieldModificationDateTimeField
  2. Django Threaded Multihost,最初是为Satchmo开发的,它 提供一个threadlocals机制,该机制对django可靠地工作 通过sites框架为多个站点供电的安装。

安装

  1. 安装pip
  2. 运行pip install django-audited-models
  3. threaded_multihost.middleware.ThreadLocalMiddleware添加到 MIDDLEWARE_CLASSES
  4. 从django中的AuditedModel而不是models.Model继承 应用。
  5. 利润!

说明

Django审核的模型满足以下几个需求:

  1. 这种元数据几乎总是有用的,而且捕获起来很便宜- 你的大多数客户都认为这些信息已经被记录下来了 如果他们做不到就要沮丧(“你的意思是我们看不到谁 创建了此记录?“)
  2. django的管理日志功能提供了一些细节,但是 缺陷在于它只捕获发生在管理员内部的事件 本身。
  3. 此应用程序为 元数据。
  4. 此应用程序使用其他几个应用程序捕获此 自动获取信息。不必用无关的东西来污染你的观点 逻辑或重写ModelAdmin方法以存储创建 记录。
  5. 它是可插入的-只需将其放入,安装其需求,从 AuditedModel,您将拥有您的创建/修改日期和 分别由用户负责。同样,替换 ModelAdmin使用AuditedAdmin子类,您将拥有一些 管理用户界面的合理默认值(只读元数据字段等)。
  6. 作为奖励,确保MyModel.objects.latest()执行某些操作 默认情况下是合理的-在使用解释器时非常方便, 尤其是。

有些人可能会质疑时间输入字段的详细程度 (datetime_createddatetime_modified)。请考虑以下事项:

>>> from datetime import date
>>> latest_user = User.objects.latest('date_joined')
>>> if latest_user.date_joined < date.today():
>>>     print "Nobody has joined the site today."

# Intuitively, this looks like it will work, but...
TypeError: can't compare datetime.datetime to datetime.date

python对待datetime对象与对待dates对象非常不同,并且 显式字段名提醒开发人员注意这种差异,并有助于防止 错误的假设导致的错误。

要求

  • Python2.5+
  • Django 1.2+
  • requirements.txt
  • 中列出的应用程序

您还需要安装 requirements-dev.txt以便运行测试套件。

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

推荐PyPI第三方库


热门话题
java集合属性值   java字符串==运算符是否比较引用?   java是否存在过太多的ListView或适配器?   json获取java中类路径中下载的文件   我可以用java代码解决数据库并发问题吗?   在多个线程中使用forEach()或使用forEach()和lambdas进行java集合迭代   java输出JFrame中的整个循环   java禁用高度详细的日志记录   java在没有特定属性的对象中访问模型的值   java Smack xmpp建立连接   处理过时域对象引起的并发问题的java策略(Grails/GORM/Hibernate)   java从ObservableList中提取元素   使用图像进行java相似图像搜索   java ListView和图像:我快疯了   在Java中,如何从毫秒时间戳中提取一天的周期?   java我需要这样的设计,但我面临两个问题   java如何获取JGoodies FormLayout中的单元格大小   Spring引导生成的java War文件未部署到Weblogic 12c