simple history 이력 확인
2023. 10. 16. 17:58ㆍPython/Django
목차
내용
- Django 사용 시에 Model의 이력관리를 위해 simple history를 사용하는 경우가 많다.
- simple history를 이용해 실수로 삭제를 해서 object를 조회하기 힘든 경우에도 조회나 복구가 가능하다.
simple history
django-simple-history — django-simple-history 3.5.0.post4+g4d39103 documentation
© Copyright 2013, Corey Bertram. Revision 4d39103e.
django-simple-history.readthedocs.io
설치방법
1. Install
$ pip install django-simple-history
2. Settings
INSTALLED_APPS = [
# ...
'simple_history',
]
3. Middleware
MIDDLEWARE = [
# ...
'simple_history.middleware.HistoryRequestMiddleware',
]
4. Model
from django.db import models
from simple_history.models import HistoricalRecords
class Model(models.Model):
question = models.CharField(max_length=200)
history = HistoricalRecords()
사용 예시
# 히스토리 조회
Model.objects.get(id=1).history.all()
# 삭제 이력 조회
Model.history.filter(history_type='-')
history type 종류
history_type | 설명 |
'+' (추가) | 새로운 레코드가 추가될 때 발생하는 이력 유형입니다. |
'~' (변경) | 레코드가 변경될 때 발생하는 이력 유형입니다. |
'-' (삭제) | 레코드가 삭제될 때 발생하는 이력 유형입니다. |
'!' (초기 레코드 생성) | 모델이 최초로 생성될 때 발생하는 이력 유형입니다. |
'~+' (변경된 후 추가) | 레코드가 변경된 후 추가될 때 발생하는 이력 유형입니다. |
'~~' (두 번 변경) | 레코드가 두 번 이상 변경될 때 발생하는 이력 유형입니다. |
'~-' (변경된 후 삭제) | 레코드가 변경된 후 삭제될 때 발생하는 이력 유형입니다. |
'!~' (초기 레코드 생성 후 변경) | 레코드가 초기 생성 이후 변경될 때 발생하는 이력 유형입니다. |
'!+' (초기 레코드 생성 후 추가) | 레코드가 초기 생성 이후 추가될 때 발생하는 이력 유형입니다. |
'!-' (초기 레코드 생성 후 삭제) | 레코드가 초기 생성 이후 삭제될 때 발생하는 이력 유형입니다. |
이력 복구
history = Model.history.get(history_id=1234)
instance = history.instance
instance.pk=None
instance.save()
- 해당 방식은 object를 복제할때 사용할 수도 있음.
'Python > Django' 카테고리의 다른 글
[Django] Cache(캐시) (1) | 2024.01.03 |
---|---|
[Django] Django model on_delete 종류 (0) | 2023.12.20 |
[Django] 특정 리스트에 순서에 맞게 order_by(id 순서대로 정렬) (0) | 2023.10.10 |
Versioning decorator (0) | 2023.08.21 |
[Django] SerializerMethodField (0) | 2023.06.19 |