Django TypeError: ‘ 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
    

但是 Block _ set返回一个不可迭代的 相关经理对象。

我做错了什么,我该怎么弥补?

67431 次浏览

Try this:

block in group.block_set.all()

Use it like a Manager. If you want all the objects then call the all() method.

you have to use .all() with related name or childModel_set model name .

in views.py use :

for item in object.relatedname.all():
do something ......

in html templates use:

 {% for item in object.relatedname.all %}
do something ......
{% endfor %}