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

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

我在返回對象列表的查詢集上的 Django 3.0 上收到“‘ManyRelatedManager’

我在返回對象列表的查詢集上的 Django 3.0 上收到“‘ManyRelatedManager’

慕娘9325324 2023-03-30 16:50:13
TypeError: 'ManyRelatedManager' object is not iterable我在 Django 3.0 中遇到錯誤這是我的問題:我必須Collection與模型Element建立關系ManyToMany。這是模型(我顯然省略了與問題無關的所有其他屬性和方法):class Collection(models.Models):   elements = models.ManyToManyField(Element, related_name="collections")   @proprety   def total_elements_value(self):        total = 0        for element in self.elements.all():  # The problem is on this line !            total += element.total_value        return totalclass Element(models.Models):   value1 = models.IntegerField()   value2 = models.IntegerField()   @proprety   def total_value(self):        return self.value1 + self.value2但是當我嘗試調用 Collection.total_elements_value 屬性時,出現了這個錯誤:TypeError: 'ManyRelatedManager' 對象不可迭代我不明白。self.elements.all() 返回一個列表作為查詢集,所以它應該是可迭代的,不是嗎?當我在 python shell 中嘗試這個時,它工作正常:c = Collection.objects.all()[0]total = 0for element in c.elements.all():    total += element.total_valuereturn total  # Works但不是當我打電話給物業時:c = Collection.objects.all()[0]c.total_elements_value  # Throws the error我想知道如何解決這個問題,但更重要的是,了解為什么這不起作用。感謝您的幫助。
查看完整描述

2 回答

?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

我發現是問題所在。

我的代碼,我忘記了模型定義中的括號。我將括號放在我的模板標簽中。

恰恰相反。


查看完整回答
反對 回復 2023-03-30
?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

正如文檔中所述,可以通過_set在末尾添加來訪問實際的集合(如果您沒有手動聲明)。在您的情況下,獲取所有相關對象的 QuerySetself.elements_set.all()



查看完整回答
反對 回復 2023-03-30
  • 2 回答
  • 0 關注
  • 203 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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