我正在尝试在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关系
是非对称的。