私はこのようなコードを持っています
def many_objects_saving(list_of_objects):
for some_object in list_of_objects:
# do smth with an object
some_object.save()
私が知っているように、djangoはコードでsave()に到達するたびにデータベースにアクセスします。したがって、ここに2つの質問があります。
- この関数を別の関数で使用して、
transaction.commit_on_success
またはtransaction.commit_manually
デコレータでラップする場合、djangoは1つのトランザクションですべての保存を実行し、データベースへのアクセスを減らしますか(1つの関数内)?
例:
def resave_objects(model, condition):
list_of_objects = model.objects.filter(**condition)
many_objects_save(list_of_objects)
@transaction.commit_on_success
def many_objects_save(list_of_objects):
for some_object in list_of_objects:
# do smth with an object
some_object.save()
2.もしそうなら、それは大きなクエリセットに適していますか?君たちありがとう!