跳转到主要内容

一个提供内置逻辑删除功能的基模型

项目描述

这是一个小型简单的应用程序,我将其组合在一起以在几乎每个项目和每个创建的模型中获得一些重用。好数据被删除并且无法恢复的情况太容易发生了。通过覆盖模型的delete()方法并仅将记录标记为已删除,然后利用Django的Manager覆盖默认行为,这样逻辑删除的项就不会在查询集中返回,这种方法也太容易解决这个问题。

然而,我发现有两个例外对这个规则是有用的。

  1. 在管理界面中,我喜欢看到带有是否被删除的指示器的所有内容,并且能够过滤到仅活动记录(或者删除的记录)。

  2. 当通过主键值获取项目时,我认为即使它被标记为已删除,对象也应该返回,这是一个有效的请求。

安装django-logicaldelete

pip install django-logicaldelete

使用django-logicaldelete

使用该应用程序非常简单

  1. logicaldelete添加到您的INSTALLED_APPS

  2. 为所有希望使用此功能的所有模型继承自logicaldelete.models.Model

  3. 使用logicaldelete.admin.ModelAdmin为这些模型中的每个创建和/或注册管理器。

附加信息

逻辑删除通过日期戳一个date_removed列来处理。此外,为了方便,还将填充一个date_createddate_modified列。

向后不兼容的更改

1.1

  • 在LogicalDeleteManager中将everything更改为all_with_deleted

  • LogicalDeleteManager从logicaldelete.models移动到logicaldelete.managers

  • logicaldelete.models.Model 中移除了 deletedeverything 查询集

项目详情


下载文件

下载适用于您平台文件的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

django-logicaldelete-1.2.tar.gz (4.1 kB 查看散列)

支持