我正在尝试在Django中创建一个简单的“跟随”功能,如下所示(顺便说一句,我不使用django.contrib.auth,如果有区别的话):

class User(models.Model):
     followers = models.ManyToManyField('self')
     # rest of code


我已经在两个用户(用户X和用户Y)的站点上对此进行了测试...但是将用户X添加到用户Y的关注者时,用户Y也添加到用户X的关注者中,这不是预期的结果。我该如何使它成为一种单方面的关系?难道我做错了什么?

最佳答案

默认情况下,自引用ManyToManyField是对称的。请参见following in the docs


  ... ManyToManyField被认为是对称的-也就是说,如果我是您
  朋友,那你就是我的朋友。
  
  如果您不希望与自我的多对多关系中具有对称性,
  将对称设置为False。这将迫使Django添加描述符
  对于反向关系,允许ManyToManyField关系
  是非对称的。

10-04 20:29