데이터베이스에서 장고 객체의 상태를 새로 고칠 수 있습니까? 나는 대략 다음과 같은 행동을 의미합니다.
new_self = self.__class__.objects.get(pk=self.pk)
for each field of the record:
setattr(self, field, getattr(new_self, field))
업데이트 : http://code.djangoproject.com/ticket/901 추적기에서 재개 열 / wontfix 전쟁을 발견했습니다 . 여전히 관리자가 왜 이것을 좋아하지 않는지 이해하지 못합니다.
이것은 불필요한 기능처럼 보입니다. 데이터베이스에서 객체를 다시 조회하는 것이 이미 가능합니다.
—
Stephan
—
나도
장고 모델 객체는 프록시이므로 적합하지 않습니다. 동일한 테이블 행을 두 객체로 가져 오면-x1 = X.objects.get (id = 1); x2 = X.objects.get (id = 1), 동일한 것으로 테스트되지만 다른 객체이며 상태가 공유되지 않습니다. 둘 다 독립적으로 변경하여 저장할 수 있습니다. 마지막으로 저장된 것이 데이터베이스의 행 상태를 결정합니다. 따라서 간단한 할당 (x1 = X.objects.get (id = 1))으로 다시로드하는 것이 좋습니다. 재로드 방법을 사용하면 많은 사람들이 x1.f = '새로운 가치'라고 잘못 추론 할 수 있습니다. (x1.f == x2.f)는 True입니다.
—
Paul Whipp
commmit
. 그런 다음에는 다음 SQL 트랜잭션이 커밋 될 때까지 기다려야합니다. 왜 그런가요? 다음 거래를 얼마나 기다려야합니까?