2017-08-19 2 views
1

Ich kann den Fehler nicht beheben, der als Many Related Manager bezeichnet wird, ist nicht iterable. Ich habe Modelle genannt A und B, wie unten dargestellt:TypeError: ManyRelatedManager-Objekt ist nicht iterierbar

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) 

Ich möchte Definitionen abrufen Attribut von Modell A, die Attribute der Klasse B enthält Ich habe versucht, es zurückzuholen, wie unten gezeigt, aber es ist mir ein Fehler :

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) 

Antwort

6

ein M2M-Bereich als verwandtes Manager-Objekt so dass sie nicht iterable zurückgegeben. Sie müssen alles verwenden, um es in ein Abfrage-Set zu konvertieren, um es iterierbar zu machen.

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) 

Sie können mehr über m2m Feld lesen.

+0

Vielen Dank! Es funktionierte großartig –

+1

Danke für die Docs-Info –

Verwandte Themen