2010-05-03 17 views
42

Estoy tratando de imprimir una lista de todas las conferencias y para cada conferencia, imprimo sus 3 parlantes.listando objetos de ManyToManyField

En mi plantilla que tengo:

{% 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 %} 

en mi archivo tengo views.py:

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}) 

hay un modelo llamado conferencia. que tiene una clase denominada Conferencias con ManyToManyField nombrados altavoces

me sale el error:

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

con esta línea: {% for speakers in conference.speakers %}

Respuesta

80

Es necesario llamar all de los muchos -to-many field para obtener un objeto iterable. Además, la siguiente línea debe contener el parlante en lugar de conference.speakers.

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

Muchas gracias :) no era lo que yo estaba pensando! –

+0

¿Qué sucede si, en mi opinión, deseo transformar el ManyRelatedManager en una lista para pasar en una consulta? – EduardoMaia

12

similares pythoncode dentro de esto sería:

for speaker in conferenece.speakers.all(): 
    print speaker.FIELDNAME 
Cuestiones relacionadas