データベースからすべてのオブジェクトを取得し、それらを python foreach ループで反復処理すると、ループ内のすべてのオブジェクトが削除されます。顧客オブジェクトとしてまだメモリ内にある、削除されたデータベース エントリはどうなるか
for cust in Customer.objects.all():
#delete all
for cust2 in Customer.objects.all():
cust2.delete()
#what is cust now??
cust.save() # is this valid?
各顧客の反復ごとに値をすぐに更新することは可能でしょうか? そのため、cust1 の処理中に cust2 を削除し、次の繰り返しでは cust2 の処理を開始しません...次のように想像してください。
for cust in Customer.objects.all():
if cust.pay_everyone():
for cust2 in Customer.objects.all():
cust2.paid = True
cust2.save()
#when cust2 comes in the loop, cust2.paid is still False
#the previous pay_everyone() method is undone
if cust.kill_everyone():
for cust2 in Customer.objects.all():
cust2.delete()
#when cust2 comes in the loop, he is still alive when he should be dead
cust.save()
# in cust2's turn in the loop, he has been just resurrected which is not possible