Django复制/粘贴Queryset

时间:2012-06-06 09:21:44

标签: python django django-orm

除了迭代记录和克隆/保存之外,Django复制和粘贴Queryset的方法是什么? 例如。需要选择表A中的一组记录,更新一些字段并将记录插回到原始表中?一个示例用例是将订阅者从邮件列表A添加到邮件列表B. 它应该只是一个循环遍历QuerySet并按记录克隆/保存记录,或者有 一些小组操作的方法?

3 个答案:

答案 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()