Django自引用m2m字段导致丢失属性错误

时间:2016-09-11 21:47:36

标签: python django django-models many-to-many

如果我尝试创建一个自引用的m2m字段,我会收到错误。我在这里错过了什么吗?

class UserProfile(models.Model):
    following = models.ManyToManyField('self', related_name='followers')

序列化器中的其他地方:

def get_followers(user):
    return user.profile.followers

AttributeError: 'UserProfile' object has no attribute 'followers'

我可以通过其他方式实施粉丝吗?也许我应该制作另一个模型来做这个或使用库?

1 个答案:

答案 0 :(得分:0)

默认情况下,Django将所有self m2m关系视为对称,例如,如果我是你的朋友,你也是我的朋友。当关系是对称的时,Django不会为你的模型创建反向关系属性。

如果要定义非对称关系,请在字段上设置symmetrical=False属性,例如:

    following = models.ManyToManyField('self', related_name='followers', symmetrical=False)

Django documentation

中的更多内容