web-dev-qa-db-ja.com

DjangoのManyToManyリレーションにIDでオブジェクトを追加します

DjangoのManyToManyフィールドmy_field.add(my_instance)を使用して入力できますが、私が理解しているように、対応するSQLクエリを実行するには実際には_my_instance.id_のみが必要です。

IDでオブジェクトを追加する場合は、my_field.add(MyModel.objects.get(id=id))を使用できますが、これにより1つではなく2つのクエリが生成されます。この余分なクエリを回避するにはどうすればよいですか?

20
pintoch

addメソッドのドキュメント はそれについて言及していませんが、実際には次のようにIDを直接渡すことができます。

my_instance.add(id)

確かに、これは主キーがリレーションの識別子として使用されている場合にのみ機能します(デフォルトの動作)。

23
pintoch