屏蔽对象,而不是从数据库中删除它们。
django-safedelete的Python项目详细描述
Django安全删除
这是什么?
出于各种原因,您可能希望避免从数据库中删除对象。
这个django应用程序提供了一个抽象模型,允许您透明地检索或删除对象, 不会从数据库中删除。
< dl >示例
# importsfromsafedelete.modelsimportSafeDeleteModelfromsafedelete.modelsimportHARD_DELETE_NOCASCADE# Models# We create a new model, with the given policy : Objects will be hard-deleted, or soft deleted if other objects would have been deleted too.classArticle(SafeDeleteModel):_safedelete_policy=HARD_DELETE_NOCASCADEname=models.CharField(max_length=100)classOrder(SafeDeleteModel):_safedelete_policy=HARD_DELETE_NOCASCADEname=models.CharField(max_length=100)articles=models.ManyToManyField(Article)# Example of use>>>article1=Article(name='article1')>>>article1.save()>>>article2=Article(name='article2')>>>article2.save()>>>order=Order(name='order')>>>order.save()>>>order.articles.add(article1)# This article will be masked, but not deleted from the database as it is still referenced in an order.>>>article1.delete()# This article will be deleted from the database.>>>article2.delete()
相容性
- branch 0.2.x与django兼容>;=1.2
- branch 0.3.x与django兼容>;=1.4
- branch 0.4.x与django兼容>;=1.8
- branch 0.5.x与django兼容>;=1.11
电流支路(0.5.x)已使用:
- Django 1.11使用Python2.7和Python3.4到3.6。
- 使用Python3.4到3.6的Django 2.0。
- 使用Python3.5到3.7的Django 2.1。
- 使用Python3.5到3.7的Django 2.2。
安装
从pypi安装(使用pip)。
pip install django-safedelete
从Github安装。
pip install -e git://github.com/makinacorpus/django-safedelete.git#egg=django-safedelete
在已安装的应用程序中添加safedelete
INSTALLED_APPS=['safedelete',[...]]
应用程序没有任何特殊要求。
配置
在主django设置中,您可以激活布尔变量safe_delete_interpret_undeleted_objects_as_created。 如果这样做,django的标准manager类中的update_或_create()函数将返回 如果对象被软删除并现在被"恢复",则创建 变量。
许可
请查看许可证文件。