You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何批量创建自关联ManyToManyField的关联对象?

Django自关联多对多关系批量创建方法

现有模型定义:

class MyTable(Model):
     close = ManyToManyField("MyTable")

问题

如何批量创建这种自关联多对多关系的对象?

非自关联场景的参考代码

对于普通非自关联的多对多表,批量创建关联的代码如下:

db_payload = [MyTable.close.through(tablea_id=x, tableb_id=y) for x,y in some_obj_list]
MyTable.close.through.objects.bulk_create(db_payload)

自关联场景的解决方案

自关联多对多的中间表字段名是Django自动生成的,规则为[多对多字段名]_from和[多对多字段名]_to。对应到这个例子里,就是close_from_id和close_to_id。

因此批量创建自关联关系的代码应为:

db_payload = [MyTable.close.through(close_from_id=x, close_to_id=y) for x,y in some_obj_list]
MyTable.close.through.objects.bulk_create(db_payload)

如果不确定具体字段名,可以通过以下方式确认:

  • 查看数据库中生成的中间表结构
  • 在Django Shell中执行print(MyTable.close.through._meta.fields),从输出的字段列表中找到对应的关联字段

内容的提问来源于stack exchange,提问作者vahvero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 15:57:04