1. ホーム
  2. ジャンゴ

[解決済み】DjangoでManyToManyリレーションに複数のオブジェクトを一度に追加する方法は?

2022-04-03 23:40:10

質問

Django のドキュメントによると、複数のオブジェクトを一度に渡して多人数リレーションに追加できるはずなのに

TypeError: ハッシュ化できないタイプ: 'リスト'

djangoのquerysetをリストにキャストして渡そうとしたとき。Queryset や ValuesListQueryset を渡すのも失敗するようです。forループを使用するよりも良い方法はありますか?

解決方法は?

使用してください。 object.m2mfield.add(*items) で説明したように ドキュメント :

add() は、引数のリストではなく、任意の数の引数を受け付けます。

add(obj1, obj2, obj3, ...)

このリストを引数に展開するには *

add(*[obj1, obj2, obj3])

追記

Djangoは obj.save() を使用し、各項目に対して bulk_create() の代わりに