카테고리 없음
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