由于django模型的save()方法并不是懒惰的,并且由于保持事务简短是一般的好习惯,应该保存优先级延迟到事务块的末尾?
例如,代码示例B是否会将事务打开的时间少于下面的代码示例A?
代码示例A:
from django.db import transaction
from my_app.models import MyModel
@transaction.commit_on_success
def model_altering_method():
for inst in MyModel.objects.all()[0:5000]:
inst.name = 'Joel Spolsky'
# Some models independent time consuming operations...
inst.save()
Run Code Online (Sandbox Code Playgroud)
代码示例B:
from django.db import transaction
from my_app.models import MyModel
@transaction.commit_on_success
def model_altering_method():
instances_to_save = []
for inst in MyModel.objects.all()[0:5000]:
inst.name = 'Joel Spolsky'
# Some models independent time consuming operations...
instances_to_save.append(inst)
for inst in instances_to_save:
inst.save()
Run Code Online (Sandbox Code Playgroud)