1

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

4

3 回答 3

1

Django 1.4 有bulk_create方法,可以在 1 个 sql 查询中完成他的工作

于 2012-06-06T09:44:13.063 回答
1

听起来您不想克隆或复制这些记录-无论如何,在规范化数据库中都应该避免这种情况。

如果您只想更新单个字段,则可以使用updatequeryset 方法:

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))
于 2012-06-06T09:45:55.827 回答
0

在 Django 1.3 中,解决方案是迭代 QuerySet 并创建如下副本:

from copy import deepcopy
old_obj = deepcopy(obj)
old_obj.id = None
old_obj.save()
于 2012-06-06T09:46:26.773 回答