首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在django中批量创建模型对象

在django中批量创建模型对象
EN

Stack Overflow用户
提问于 2010-08-31 19:23:03
回答 8查看 160.4K关注 0票数 109

我有很多对象要保存在数据库中,所以我想用它来创建Model实例。

使用django,我可以用MyModel(data)创建所有的模型实例,然后我想保存它们。

目前,我有类似的东西:

代码语言:javascript
复制
for item in items:
    object = MyModel(name=item.name)
    object.save()

我想知道是否可以直接保存对象列表,例如:

代码语言:javascript
复制
objects = []
for item in items:
    objects.append(MyModel(name=item.name))
objects.save_all()

如何在一个事务中保存所有对象?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-01-17 07:38:33

在django开发中,存在bulk_create作为对象管理器方法,它接受使用类构造函数创建的对象数组作为输入。查看django文档

票数 113
EN

Stack Overflow用户

发布于 2012-11-08 21:39:50

我使用手动事务处理来处理循环(postgres 9.1):

代码语言:javascript
复制
from django.db import transaction
with transaction.atomic():
    for item in items:
        MyModel.objects.create(name=item.name)

事实上,它与‘原生’数据库大容量插入不同,但它允许您避免/减少传输/orms操作/sql查询分析成本

票数 5
EN

Stack Overflow用户

发布于 2013-04-29 19:03:28

下面是如何从以列分隔的文件批量创建实体,将所有未引用和未转义的例程放在一边:

代码语言:javascript
复制
SomeModel(Model):
    @classmethod
    def from_file(model, file_obj, headers, delimiter):
        model.objects.bulk_create([
            model(**dict(zip(headers, line.split(delimiter))))
            for line in file_obj],
            batch_size=None)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3608487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档