【发布时间】:2010-01-07 09:47:23
【问题描述】:
我有对象 A 女巫与对象 b 有多对多的关系。 是否可以批量保存对象 A 和它的 B 集合'我的意思是不要一个接一个地保存 B 对象然后将它们添加到 A.
for b in b_objects :
A.b_objs.add(b)
A.save()
谢谢
【问题讨论】:
我有对象 A 女巫与对象 b 有多对多的关系。 是否可以批量保存对象 A 和它的 B 集合'我的意思是不要一个接一个地保存 B 对象然后将它们添加到 A.
for b in b_objects :
A.b_objs.add(b)
A.save()
谢谢
【问题讨论】:
您可以将模型转储为 json(来自 http://www.djangosnippets.org/snippets/125/):
import sys, os
sys.path.append('/Path/To/Django/Projects/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'
from django.core.serializers import serialize
from myproject.myapp import models
model_names = [] # a list of the names of the models you want to export
for model_name in model_names:
cls = getattr(models, model_name)
filename = model_name.lower() + ".json"
file = open(filename, "w")
file.write(serialize("json", cls.objects.all()))
【讨论】:
我不这么认为。 ManyToMany 关系是通过一个包含 (id, a_id, b_id) 元组的中间表实现的。因此A must pre-exist(参见“示例API 用法”)和每个B 必须有一个id,然后才能创建中间行。我查看了django.db.models.fields.related 中的源代码,虽然create_many_related_manager 有一个名为_add_items() 的方法,但似乎假设所有添加的B 项都已经有id 字段,这意味着它们必须事先保存。
我找不到任何可以允许使用 A.add(bunch_of_Bs_that_havent_been_saved_yet) 的内容。上面提到的例子确实显示add()在一个镜头中有多个B,但它们都在add()发生之前被保存了。对不起。
【讨论】: