如何在自类中使用ManyToManyField

3 投票
1 回答
51 浏览
提问于 2025-04-14 18:14

我在我的 models.py 文件里有一个叫 Account 的模型。
现在我想创建一个字段,让我可以选择我自己的模型对象。比如说,如果我有三个账户 {Jack, Harry, Helena},
我想在这三个账户中选择我想要的。实际上,我只是想创建一个 关注系统。Jack 可以关注 Harry 和 Helena,
而且 Helena 也可以关注 Jack 或者 Harry。
请问我该怎么做呢?

models.py 文件中的 Account

class Account(models.Model):
    username = models.CharField(max_length=100)
    following = models.ManyToManyField(**Account**, blank=True)

1 个回答

1

几乎就像你在标题中提到的那样:使用 'self'。不过这里有个注意事项:ManyToManyField(多对多字段)如果指向自己,默认情况下是对称的:也就是说,如果A关注了B,那么B会自动关注A。这可能不是你想要的效果。如果是这样的话,可以设置 symmetrical=False [Django-doc]

class Account(models.Model):
    username = models.CharField(max_length=100)
    following = models.ManyToManyField(
        'self', symmetrical=False, blank=True, related_name='followers'
    )

撰写回答