除了迭代记录和克隆/保存之外,Django复制和粘贴Queryset的方法是什么? 例如。需要选择表A中的一组记录,更新一些字段并将记录插回到原始表中?一个示例用例是将订阅者从邮件列表A添加到邮件列表B. 它应该只是一个循环遍历QuerySet并按记录克隆/保存记录,或者有 一些小组操作的方法?
答案 0 :(得分:1)
Django 1.4具有bulk_create方法,可以在1 sql查询中完成其工作
答案 1 :(得分:0)
这听起来并不像是要克隆或复制这些记录 - 无论如何,这应该是规范化数据库中应该避免的。
如果您只想更新单个字段,则可以使用update
queryset方法执行此操作:
MyModel.objects.filter(mailing_list=list_a).update(mailing_list=list_b)
如果您正在谈论将它们添加到不同的M2M关系中,那么您可以这样做:
mailing_list_b.users.add(*MyModel.objects.filter(mailing_list=list_a))
答案 2 :(得分:0)
在Django 1.3中,解决方案是迭代QuerySet并创建如下副本:
from copy import deepcopy
old_obj = deepcopy(obj)
old_obj.id = None
old_obj.save()