장고 트랜잭션 처리 문의

장고에서 두 개의 모델을 동시에 저장할 때 두 개의 저장이 모두 성공할 때만 두 개가 데이터가 함께 저장되길 보장받고 싶습니다. 예를 들어 하나의 함수에서 a와 b 모델을 동시에 저장할 때 a는 성공하고 b가 실패할 경우 a에 저장된 데이터가 취소되기를 원합니다.

all or nothing을 쉽게 구현할 수 있는 방법이 있나요?

박응용 426

M 2020년 7월 9일 10:44 오후

목록으로
1개의 답변이 있습니다. 1 / 1 Page

장고의 트랜잭션 처리를 위한 어노테이션을 사용하면 됩니다.

다음처럼 함수명 바로 위에 @transaction.atomic 라는 어노테이션을 붙여주면 트랜잭션 처리가 됩니다.

@transaction.atomic
def sample(request):
    ...
    a.save()
    ...
    b.save()
    ...

박응용

M 2020년 7월 9일 10:16 오후