亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在多對多字段中使用自引用時,Django related_name 不起作用

在多對多字段中使用自引用時,Django related_name 不起作用

動漫人物 2023-09-12 19:05:53
我目前正在嘗試在用戶之間創建以下關系,因此我在用戶模型中使用了多對多字段來引用自身。class User(AbstractUser):    followers = models.ManyToManyField('self', related_name='following')    def __str__(self):        return self.username但是,當我使用 shell 測試此模型并嘗試訪問 related_name 時,它報告發生了錯誤。>>> 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'現在我真的很困惑,真的需要幫助或其他方法來做到這一點。
查看完整描述

3 回答

?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

它應該看起來像這樣

class User(AbstractUser):

? ? followers = models.ManyToManyField(

? ? ? ? 'self',

? ? ? ? symmetrical=False,

? ? ? ? related_name='following',

? ? )


查看完整回答
反對 回復 2023-09-12
?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

我認為 Django 不允許我們在字段引用自身時給出 related_name 。

他們本質上做的是創建另一個名為 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")



查看完整回答
反對 回復 2023-09-12
?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

如果將多對多關系指定給其他模型,則 related_name 屬性指定從用戶模型返回到您的模型的反向關系的名稱。

但在這種情況下......兩個模型是相同的

所以你試試這個

u1 = User.objects.get(pk=1) u1.followers.all()


查看完整回答
反對 回復 2023-09-12
  • 3 回答
  • 0 關注
  • 193 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號