如果我基于某些表单输入创建新模型对象的列表,例如
new_items = []
for name, value in self.cleaned_data.items():
if name.startswith('content_item_'):
new_items.append(ContentItem(item=value))
# can I add the entire new_items list to the database in one swoop?
我无法在文档中查找是否存在这种情况,这通常是指通过.save()方法一次创建一个对象。但是当你有一整套要添加的对象时,一次一个似乎效率低下。
谢谢!
答案 0 :(得分:1)
我相信Brandon Konkle对类似问题的回复仍然有效:Question about batch save objects in Django
总结:遗憾的是,不,你必须使用带有手动查询的django.db.cursor来执行此操作。如果数据集很小,或者性能不那么重要,那么循环并不是那么糟糕,而且是最简单的解决方案。
答案 1 :(得分:1)
https://docs.djangoproject.com/en/dev/ref/models/querysets/#bulk-create
编辑:不幸的是,这不是1.3
原始答案
感谢上帝bulk_create
!
然后你可以这样做:
ContentItem.objects.bulk_create(new_items)
对于那些懒得点击链接的人,以下是文档中的示例:
>>> Entry.objects.bulk_create([
... Entry(headline="Django 1.0 Released"),
... Entry(headline="Django 1.1 Announced"),
... Entry(headline="Breaking: Django is awesome")
... ])