1

レコードの繰り返しと複製/保存を除いて、クエリセットをコピーして貼り付けるDjangoの方法は何ですか? たとえば、テーブル A の一連のレコードを選択し、いくつかのフィールドを更新し、レコードを元のテーブルに挿入し直す必要がありますか? サンプルの使用例は、メーリング リスト A からメーリング リスト B に購読者を追加することです。これは、QuerySet を繰り返し、レコードごとにレコードを複製/保存する単なるループであるべきですか、それともグループ操作のための何らかの方法がありますか?

4

3 に答える 3

1

Django 1.4には、1つのSQLクエリで仕事をするbulk_createメソッドがあります

于 2012-06-06T09:44:13.063 に答える
1

これらのレコードを複製またはコピーする必要があるようには思えません。これは、正規化されたデータベースでは避けるべきことです。

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 に答える