首页 > 解决方案 > 与自我表Django的多对多关系

问题描述

我有一个带有多对多关系的自引用列的表

class PanelUser(core_models.TimestampedModel):
    assigned = models.ManyToManyField("self", related_name="panelusers", blank=True)

    def __str__(self):
        return self.user.username

问题 我有三条记录A,B,C,如果我分配 A = B然后自动分配B = A

我不明白为什么会这样,我如何解决它。

标签: djangodjango-modelsdjango-rest-framework

解决方案


A在使用“self”时ManyToManyField需要一个symmetrical参数,当设置为False它时,它会阻止您描述的行为并使关系不对称

assigned = models.ManyToManyField(
    "self",
    related_name="panelusers",
    blank=True,
    symmetrical=False
)

推荐阅读