2010-05-03 13 views
42

Sto provando a stampare un elenco di tutte le conferenze e per ogni conferenza, stampare i suoi 3 altoparlanti.elencando oggetti da ManyToManyField

Nel mio modello ho:

{% if conferences %} 
     <ul> 
     {% for conference in conferences %} 
       <li>{{ conference.date }}</li> 
       {% for speakers in conference.speakers %} 
         <li>{{ conference.speakers }}</li> 
       {% endfor %} 
     {% endfor %} 
     </ul> 
{% else %} 
<p>No Conferences</p> 
{% endif %} 

nel mio file views.py ho:

from django.shortcuts import render_to_response 
from youthconf.conference.models import Conference 

def manageconf(request): 
     conferences = Conference.objects.all().order_by('-date')[:5] 
     return render_to_response('conference/manageconf.html', {'conferences': conferences}) 

c'è un modello di nome conferenza. che ha una classe denominata Conferenze con ManyToManyField nome altoparlanti

ottengo l'errore:

Caught an exception while rendering: 'ManyRelatedManager' object is not iterable 

con questa linea: {% for speakers in conference.speakers %}

risposta

80

È necessario chiamare all sulla molti -a-molti per ottenere un oggetto iterabile. Inoltre, la riga successiva dovrebbe contenere l'altoparlante anziché lo conference.speakers.

{% for speaker in conference.speakers.all %} 
     <li>{{ speaker }}</li> 
{% endfor %} 
+0

ringrazio molto :) non era quanto stavo pensando! –

+0

Cosa succede se, a mio avviso, desidero trasformare ManyRelatedManager in un elenco per passare una query? – EduardoMaia

12

Simile pythoncode all'interno di questo sarebbe:

for speaker in conferenece.speakers.all(): 
    print speaker.FIELDNAME 
Problemi correlati