首页 > 解决方案 > self 不应该添加多对多字段

问题描述

class User(AbstractUser):
    first_name = models.CharField(max_length=64)
    last_name = models.CharField(max_length=64)
    bio = models.TextField(max_length=128, blank=True)
    followers = models.ManyToManyField('self', related_name='followers', blank=True)

所以我有这张表,但是当我在关注者字段中添加用户时,django 也会以两种方式添加用户。例如,如果我有一个名为 john 的用户,并且我想关注一个名为 math 的用户。当 john 被添加到 math 的追随者时,math 也被添加到 john 的追随者中。我不知道为什么会这样。我应该使用其他类型的模型吗?

标签: pythondjangoweb

解决方案


您需要添加symmetrical=False,您的 m2m 关系。和 + 符号在相关名称的末尾。

followers = models.ManyToManyField('self', symmetrical=False, related_name='followers+', blank=True)

推荐阅读