쿼리 세트의 필드를 원자 적으로 업데이트하려고합니다. 나는 다음과 같은 것을 가지고있다 :쿼티 세트의 모든 인스턴스를 원자 적으로 카운트로 업데이트
counter = 0
for row in myQuerySet:
row.myField = counter
counter = counter + 1
row.save()
나는 작동한다. 그러나 나는 원자 단위로 이것을하고 싶다. 왜냐하면 나는 수백 개의 레지스터를 가지고 있고 그것은 시간 낭비이기 때문이다. 다음과 같은 것이 필요합니다.
counter = 0
myQuerySet.update(myField=(counter+=1))
하지만 작동하지 않습니다. 무엇이 올바른 sintax이 무엇입니까? 작동하지만 원자 적으로이 작업을 수행 할 수
업데이트 문은 단일 SQL 쿼리를 만들고 테이블의 일부가 아닌 값을 사용하는 경우 (즉, 필드가 아닌 경우) 상수로 처리되며 모든 행은 동일한 것으로 업데이트됩니다 값. – AKS
'F()'객체는 기존 필드 값을 기반으로 필드를 업데이트하는 데 도움이되지만 증가하는 외부 값을 기반으로 필드를 업데이트하는 방법을 생각할 수 없습니다. –
@ Sayse "step_number"정수 필드가있는 많은 레지스터가 있습니다. 이 필드는 수동으로 변경할 수 있으며 간격이있는 증분 시퀀스를 얻을 수 있습니다. 예를 들어 레지스터가 5 개인 경우 step_numbers는 1,2,3,8,9가 될 수 있습니다. 그러나 1,2,3,4,5 시퀀스를 얻기 위해 번호를 다시 매기고 싶습니다. 그것은 카운터의 목적입니다. – MouTio