1. ホーム
  2. python

[解決済み] TypeError: 'RelatedManager'オブジェクトは反復可能ではありません。

2022-03-04 07:20:41

質問

ジャンゴ

次のモデルがあります。

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 は私を返します 関連マネージャー オブジェクトを返します。これは反復可能ではありません。

どうすればいい?何が問題なのでしょうか?

解決方法は?

これを試してみてください。

block in group.block_set.all()