我試圖以原子方式更新查詢集的字段。我有這樣的事情:以原子方式更新查詢集中的每個實例
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