问题 在Django的ManyToMany关系中按id添加对象


Django的ManyToMany字段 可以使用填充 my_field.add(my_instance),但据我所知 my_instance.id 实际上需要执行相应的SQL查询。

如果我想通过其id添加对象,我可以使用 my_field.add(MyModel.objects.get(id=id)),但这将生成两个查询而不是一个。我怎样才能避免这个额外的查询?


11366
2018-05-29 15:02


起源



答案:


虽然 的文件 add 方法 没有提到它,你实际上可以直接传递一个id到它,像这样:

my_instance.add(ID)

当然,这仅在主键用作关系的标识符(默认行为)时才有效。


16
2018-05-29 15:10



直接传递id导致我的TypeError(Django 1.10.5):“TypeError:'MyRelatedModel'实例预期,获得'5835da11-dcde-47da-9664-e5c13e235ccc'” - Oskar Persson


答案:


虽然 的文件 add 方法 没有提到它,你实际上可以直接传递一个id到它,像这样:

my_instance.add(ID)

当然,这仅在主键用作关系的标识符(默认行为)时才有效。


16
2018-05-29 15:10



直接传递id导致我的TypeError(Django 1.10.5):“TypeError:'MyRelatedModel'实例预期,获得'5835da11-dcde-47da-9664-e5c13e235ccc'” - Oskar Persson