Django自关联ManyToManyField双向自动关联问题如何解决?
问题原因
Django 中针对指向自身的多对多字段,默认开启了对称关系配置,对应字段参数symmetrical默认值为True。该配置的设计初衷是适配好友、同事这类双向对等的关系场景:当你为A的assigned字段添加B的关联时,Django会自动在B的反向关联中也同步添加A的记录,因此才会出现你遇到的双向同步现象。
修复方案
显式关闭多对多字段的对称配置即可,修改后的模型代码如下:
class PanelUser(core_models.TimestampedModel): assigned = models.ManyToManyField( "self", related_name="panelusers", blank=True, symmetrical=False ) def __str__(self): return self.user.username
修改完成后需要执行如下命令完成数据库迁移:
python manage.py makemigrations生成迁移文件python manage.py migrate应用迁移到数据库
注意:如果当前环境已有存量业务数据,迁移前请务必做好数据备份,避免数据丢失或异常。
内容的提问来源于stack exchange,提问作者Sidhar_t.py
相关产品推荐
相关产品推荐

