Ale*_*eau 78 django django-models
我有很多对象要保存在数据库中,所以我想用它创建Model实例.
使用django,我可以创建所有模型实例,MyModel(data)然后我想将它们全部保存.
目前,我有类似的东西:
for item in items:
object = MyModel(name=item.name)
object.save()
Run Code Online (Sandbox Code Playgroud)
我想知道我是否可以直接保存对象列表,例如:
objects = []
for item in items:
objects.append(MyModel(name=item.name))
objects.save_all()
Run Code Online (Sandbox Code Playgroud)
如何在一个事务中保存所有对象?
ecb*_*tln 82
从django开发版本1.4开始,存在bulk_create一个对象管理器方法,它将使用类构造函数创建的对象数组作为输入.看看django docs
Dan*_*nil 32
使用bulk_create()方法.它现在是Django的标准:官方Django文档bulk_create()
例:
Entry.objects.bulk_create([
Entry(headline="Django 1.0 Released"),
Entry(headline="Django 1.1 Announced"),
Entry(headline="Breaking: Django is awesome")
])
Run Code Online (Sandbox Code Playgroud)
name = request.data.get('name')
period = request.data.get('period')
email = request.data.get('email')
prefix = request.data.get('prefix')
bulk_number = int(request.data.get('bulk_number'))
bulk_list = list()
for _ in range(bulk_number):
code = code_prefix + uuid.uuid4().hex.upper()
bulk_list.append(
DjangoModel(name=name, code=code, period=period, user=email))
bulk_msj = DjangoModel.objects.bulk_create(bulk_list)
Run Code Online (Sandbox Code Playgroud)
为我工作为循环使用手动事务处理(postgres 9.1):
from django.db import transaction
with transaction.atomic():
for item in items:
MyModel.objects.create(name=item.name)
Run Code Online (Sandbox Code Playgroud)
实际上它与“本机”数据库批量插入不同,但它允许您避免/减少传输/orms 操作/sql 查询分析成本
| 归档时间: |
|
| 查看次数: |
93229 次 |
| 最近记录: |