Djangoのドキュメントに基づいて、多対多の関係に追加するために一度に複数のオブジェクトを渡すことができるはずですが、
* TypeError:ハッシュ不可能なタイプ:'リスト'
リストにキャストされたdjangoクエリセットを渡そうとしたとき。QuerysetまたはValuesListQuerysetの受け渡しも失敗するようです。forループを使用するよりも良い方法はありますか?
Djangoのドキュメントに基づいて、多対多の関係に追加するために一度に複数のオブジェクトを渡すことができるはずですが、
* TypeError:ハッシュ不可能なタイプ:'リスト'
リストにキャストされたdjangoクエリセットを渡そうとしたとき。QuerysetまたはValuesListQuerysetの受け渡しも失敗するようです。forループを使用するよりも良い方法はありますか?
使用:ドキュメントobject.m2mfield.add(*items)
で説明されているように:
add()
引数のリストではなく、任意の数の引数を受け入れます。
add(obj1, obj2, obj3, ...)
そのリストを引数に展開するには、*
add(*[obj1, obj2, obj3])
Djangoはobj.save()
各アイテムを呼び出すのではbulk_create()
なく、代わりにを使用します。
追加するには、クエリセットから追加する場合
例
# Returns a queryset
permissions = Permission.objects.all()
# Add the results to the many to many field (notice the *)
group = MyGroup.objects.get(name='test')
group.permissions.add(*permissions)
Django 1.9は、多対多の関係に追加するための追加の方法を追加します。
set
新しい素敵なものです:
>>> new_list = [obj1, obj2, obj3]
>>> e.related_set.set(new_list)