django model save() yöntemleri are not lazy olarak ve işlemlerin kısa tutulması genel olarak iyi bir uygulama olduğundan, işlem bloklarının sonuna kadar ertelenebilir mi? Örnek olarak, kod örneği B aşağıdaki kod örneği A'dan daha az süre açık bir işlem yapabilir mi?Django - save() tabanlı işlemlere açık
kod örneği 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()
kod örneği 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()
Çoğu durumda, bir işlemin verilerini hazırlamak uzun sürüyor. Söylediğiniz gibi, eğer dekore edilmiş blok başlar başlamaz işlem açılırsa, o zaman hazırlık bloklarını ve işlem bloklarını ayırmak için bir motivasyon var demektir. Bu durumda, işlemler bölümündeki django dokümantasyonunda belgelenmelidir. . – Jonathan