屏蔽对象,而不是从数据库中删除它们。

django-safedelete的Python项目详细描述


Django安全删除

https://travis-ci.org/makinorpus/django-safedelete.pnghttps://coveralls.io/repos/makinorpus/django-safedelete/badge.png

这是什么?

出于各种原因,您可能希望避免从数据库中删除对象。

这个django应用程序提供了一个抽象模型,允许您透明地检索或删除对象, 不会从数据库中删除。

< dl >
您可以选择删除对象时发生的情况:
> UL>
  • 它可以从数据库中屏蔽(软删除,默认行为)
  • 它可以从数据库中屏蔽并屏蔽任何依赖模型。(级联软删除)
  • 可以正常删除(硬删除)
  • 它可以被硬删除,但如果删除它会删除其他对象,则只会被屏蔽
  • 不能从数据库中删除或屏蔽它(不删除,请小心使用)
  • 示例

    # 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()函数将返回 如果对象被软删除并现在被"恢复",则创建 变量。

    许可

    请查看许可证文件。

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

    推荐PyPI第三方库


    热门话题
    Android深度链接的java模式匹配   jstl在JSP中添加外部资源(CSS/JavaScript/images等)   Java开关环路中断故障   java Appengine通道API开发服务器vs生产   java断言等于Junit中的两个列表   java用“真实数据”建立测试系统   Java中使用番石榴BiMap的词典   java试图在圆周上绘制位图,在实现中找到一些偏移   json Java curl响应   java使用hibernate或JPA获取过程输出的列名   java从Android移动应用程序获取电话号码   java访问嵌套的JsonNode元素,并用逗号分隔   未使用注释的java未经检查或不安全操作   控制台中的java输出为空   java使用Android应用程序的自定义适配器将项目动态添加到列表视图   java如何解决对接口中静态方法的需求?   尝试从其他活动调用数组字符串时发生java错误   仅设备上的java Android NDK致命信号11(SIGSEGV)