2013-07-18 3 views
12

Ich versuche nur, jedes einzelne Ereignis aus einer Liste von Ereignissen herauszuziehen und eine Aktion für sie durchzuführen. Der Code, den ich zur Zeit aus meiner Sicht haben ist:ManyRelatedManager nicht iterable. Ich denke, ich versuche, meine Objekte falsch herauszuziehen

user = request.user.get_profile() 
    followed = user.eventList 
    eL = [getEvent.getEvent(e_id) for e_id in followed] 

Erstens, ich bin in Benutzern den aktuell angemeldet greifen, dann an seinem Event suchen, dann über sie iterieren. Ich bekomme den obigen Fehler. Denke ich könnte eine Zeile fehlen?

+0

TypError at/ Das Objekt 'ManyRelatedManager' ist nicht iterierbar. Passiert in der dritten Zeile – Xonal

Antwort

26

Angenommen, der Fehler eventList ist ein Viele-zu-Viele-Feld, müssen Sie .all() verwenden, um die zugehörigen Objekte abzurufen. Ein Many-to-Many-Feld ist ein Manager, mit dem Sie Abfragegruppen erstellen können, die die tatsächlichen Objekte zurückgeben.

user = request.user.get_profile() 
eL = user.eventList.all() 
+0

Vielen Dank, ich kann nicht glauben, dass ich das verpasst habe. – Xonal

+0

Es scheint wie prefetch_related könnte Ihnen helfen, ein wenig, siehe https://docs.djangoproject.com/en/1.5/ref/models/querysets/#prefetch-related – Tom

Verwandte Themen