나는 장고 모델의 주어진 인스턴스에 대해 특정 필드가 한 번만 기록되도록하는 확실한 방법을 찾고있다.django 모델 필드가 한 번만 기록되는지 확인하십시오. 자물쇠없이 원자력 보장
코드는 셀 또는 rq를 사용하여보기 또는 작업에서 실행되어야합니다.
나는 다음 코드를 사용하는 방법에 대해 생각하고 :
from django.db import transaction
from django.utils.timezone import now
...
def perform_writeonce(object_pk):
with transaction.atomic():
instance = MyModel.objects.get(pk=object_pk)
if instance.value is None:
instance.value = 'Value written now : {}'.format(now())
instance.save()
목적은 그 값이 한 번만 작성해야하고 그 값이 없음없는 경우에만입니다.
이 스 니펫에 확신이 있습니까? 아니면 내가 놓친 것이 있습니까?
하나의 postgresql 데이터베이스 서버와 함께 여러 gunicorn 인스턴스와 셀러리 작업자를 사용하고 있습니다.
나는 모든 비용을 들이지 않고 잠금 장치를 피하려고 노력하고 있으므로 응용 프로그램 잠금 장치가있는 모든 솔루션은 좋지 않습니다.
도움 주셔서 감사합니다.
저는 확신합니다. 트랜잭션이 응용 프로그램 계층이 아닌 db 계층에 의존하기 때문입니다. – itzMEonTV