카테고리 없음

Django | Soft Delete

JOOHUUN 2022. 9. 12. 20:41

1. Install

pip install django-soft-delete

2. models.py

SoftDelteModel을 import 하여 사용 가능하고 모델에는 is_deleted, deleted_at 포함 되어 있다.

from django.db import models
from django_softdelete.models import SoftDeleteModel


class Article(SoftDeleteModel):
    title = models.CharField(max_length=100)
    
    # Following fields will be added automatically
    # is_deleted
    # deleted_at

3. 사용 예시 (장고shell사용)

In [1]: from article.models import Article # 아티클 모델 import
In [2]: a1 = Article.objects.create(title='django')
	a2 = Article.objects.create(title='python')
	a3 = Article.objects.create(title='django_softdelete')
In [3]: Article.objects.count()  # 3

In [4]: a1.delete()  # soft deletion of object
In [5]: Article.objects.count()  # 2


In [6]: deleted_a1 = Article.deleted_objects.first()  # <Article: 'django'>
In [7]: deleted_a1.restore()  # restores deleted object
In [8]: Article.objects.count()  # 3
In [9]: Article.deleted_objects.count()  # 0

In [10]: a1.hard_delete() # 영구 삭제

SoftDeleteModel에 기본적으로 소프트삭제, 복구, 영구삭제 함수가 내장되어있어서 임포트만 하여 사용할 수 있지만 참조할 자료, 레퍼런스가 적다.

https://pypi.org/project/django-soft-delete/#description

 

django-soft-delete

Soft delete models, managers, queryset for Django

pypi.org