Python 在多对多字段中使用自引用时,Django相关的_名称不起作用
我目前正在尝试在用户之间创建以下关系,所以我在用户模型中使用了多对多字段来引用它自己Python 在多对多字段中使用自引用时,Django相关的_名称不起作用,python,django,model-view-controller,Python,Django,Model View Controller,我目前正在尝试在用户之间创建以下关系,所以我在用户模型中使用了多对多字段来引用它自己 class User(AbstractUser): followers = models.ManyToManyField('self', related_name='following') def __str__(self): return self.username 但是,当我使用shell测试此模型并尝试访问相关的_名称时,它报告发生了错误 >>> u1
class User(AbstractUser):
followers = models.ManyToManyField('self', related_name='following')
def __str__(self):
return self.username
但是,当我使用shell测试此模型并尝试访问相关的_名称时,它报告发生了错误
>>> u1 = User.objects.get(pk=1)
>>> u1.following.all()
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'User' object has no attribute 'following'
u1=User.objects.get(pk=1)
>>>u1.following.all()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:“用户”对象没有“以下”属性
现在我真的很困惑,真的需要帮助或其他方法来实现这一点。如果多对多关系被赋予其他模型,则related_name属性指定从用户模型返回到您的模型的反向关系的名称 但在这种情况下。。。。。两种型号都一样 所以你试试这个 u1=User.objects.get(pk=1)
u1.followers.all()我认为Django不允许我们在字段引用自身时给出相关的名称 对于这个特定的任务,我发现这个帖子很有用 他们实际上做的是创建另一个名为Following()的模型,并使用它来存储关系
class Following(models.Model):
target = models.ForeignKey('User', on_delete=models.CASCADE, related_name = "followers")
follower = models.ForeignKey('User', on_delete=models.CASCADE, related_name = "targets")
谢谢你的回答。u1.followers.all()为我工作。然而,我也想得到关于用户当前跟踪的用户的信息。。。我刚刚在网上找到了其他例子,它们创建了一个新的模型来存储关系,我认为这是实现这一点的更简单的方法。