1

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

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

我已经在我的网站上使用两个用户(用户 X 和用户 Y)对此进行了测试……但是当用户 X 添加到用户 Y 的关注者时,用户 Y 也添加到用户 X 的关注者中,这不是预期的结果。我怎样才能使这成为一种片面的关系?难道我做错了什么?

4

2 回答 2

1

您需要使关系不对称

于 2012-08-12T23:09:00.357 回答
1

默认情况下,自引用ManyToManyField是对称的。请参阅文档中的以下内容

...ManyToManyField假设是对称的——也就是说,如果我是你的朋友,那么你就是我的朋友。

如果您不希望在与 self 的多对多关系中对称,请将对称设置为 False。这将强制 Django 为反向关系添加描述符,允许 ManyToManyField 关系是非对称的。

您可以通过添加来实现它:

models.ManyToManyField("self", symmetrical=False)

于 2012-08-12T23:09:25.020 回答