【问题标题】:Django self referential m2m field causes causes missing attribtue errorDjango 自引用 m2m 字段导致缺少属性错误
【发布时间】:2016-09-11 21:47:35
【问题描述】:

如果我尝试创建一个自引用的 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'

还有其他方法可以实现追随者吗?也许我应该制作另一个模型来执行此操作或使用库?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    更多信息请关注Django documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 2011-11-06
      • 2015-10-26
      • 2019-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多