2017-08-19 28 views
1

Manyという名前のエラーを解決できません。関連マネージャは反復可能ではありません。TypeError:ManyRelatedManagerオブジェクトが反復可能ではありません

class B(models.Model): 
    indicator = models.CharField(max_length=255, null=True) 
    tags = models.CharField(max_length=255, null=True, blank=True) 


class A(models.Model): 
    definitions = models.ManyToManyField(B) 
    user = models.ForeignKey('userauth.ABCUSER', null=True, blank=True) 
    project = models.ForeignKey('userauth.ProjectList', null=True, blank=True) 

私は下図のように、私はそれを取得しようとしたクラスBの属性を含むモデルAの定義属性を取得したいが、それは私にエラーを与える:私は、以下に示すようにAとBという名前のモデルを持っています:

TypeError: ManyRelatedManager object is not iterable

if tbl_scope == 'Generic': 
     checked_objects = A.objects.get(user=user, project=project) 


for checked_object in checked_objects.definitions: 
     print(checked_object.indicator) 

答えて

6

M2Mフィールドが反復可能ではないので、関連するマネージャオブジェクトとして返されます。すべてを使用してクエリーセットに変換してiterableにする必要があります。

if tbl_scope == 'Generic': 
     checked_objects = A.objects.get(user=user, project=project) 


for checked_object in checked_objects.definitions.all(): 
     print(checked_object.indicator) 

m2mフィールドの詳細については、こちらをご覧ください。

+0

ありがとうございました!それはうまくいった –

+1

docs情報ありがとう –

関連する問題