40
Django的類型錯誤: 'RelatedManager' 對象不是可迭代
我旁邊型號:
class Group(models.Model):
name = models.CharField(max_length=100)
parent_group = models.ManyToManyField("self", blank=True)
def __unicode__(self):
return self.name
class Block(models.Model):
name = models.CharField(max_length=100)
app = models.CharField(max_length=100)
group = models.ForeignKey(Group)
def __unicode__(self):
return self.name
說,阻止B1有G1組。通過它的名字我想要所有塊來自羣組g1。我寫了下一個遞歸函數:
def get_blocks(group):
def get_needed_blocks(group):
for block in group.block_set:
blocks.append(block)
if group.parent_group is not None:
get_needed_blocks(group.parent_group)
blocks = []
get_needed_blocks(group)
return blocks
但b1.group.block_set返回我RelatedManager對象,這是不迭代。
怎麼辦?怎麼了?
有誰知道爲什麼RelatedManager不能被迭代?我本來以爲是這樣...... – stalepretzel 2013-11-18 00:33:56
這個評論有點晚,但推理是你可以在管理器上使用過濾方法來限制查詢,然後再執行對數據庫的提取。 – ovangle 2015-03-20 14:45:51
@stalepretzel,因爲它和標準的Django管理器完全一樣。您不要調用Model.objects並遍歷它。你調用Model.objects.all()然後迭代。 Django manager =/= Django queryset。 – Saturnix 2015-11-18 22:40:59