如何与ManyToManyField创建片面关系('self')

时间:2012-08-12 23:04:57

标签: python django

我正在尝试在Django中创建一个简单的“跟随”功能,就像这样(顺便说一下,我没有使用django.contrib.auth,如果这有所不同):

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

我已经在我的网站上测试了两个用户,用户X和用户Y ...但是当用户X被添加到用户Y的粉丝时,用户Y也被添加到用户X的粉丝,这不是预期的结果。我怎么能让这个片面的关系?我做错了吗?

2 个答案:

答案 0 :(得分:1)

您需要建立关系asymmetrical

答案 1 :(得分:1)

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

  

... ManyToManyField被认为是对称的 - 也就是说,如果我是你的   朋友,那你就是我的朋友。

     

如果你不想在与自我的多对多关系中保持对称,   将对称设置为False。这将强制Django添加描述符   对于反向关系,允许ManyToManyField关系   是非对称的。