就目前而言,我有一个反序列化器,可以导入我扔给它的任何模型并将其放入我的数据库中。 不幸的是,它每个模型都会命中数据库,我想阻止这种情况。
我有什么办法可以将很多短存档合并为一个大存档吗?
示例代码:
def deserialise(xml):
for x in model_list:
do work to make instance...
instance.save()
return True
有没有办法将实例的保存移出 for 循环?
您可以使用transaction.commit_manually()
.
from django.db import transaction
@transaction.commit_manually
def deserialise(xml):
for x in model_list:
# do work to make instance...
instance.save()
transaction.commit()
return True
或者transaction.commit_on_success()
函数成功返回时将自动提交保存。
from django.db import transaction
@transaction.commit_on_success
def deserialise(xml):
for x in model_list:
# do work to make instance...
instance.save()
return True
或者,在 django 1.4 中也有 bulk_create(),但请注意文档中列出的注意事项。