web-dev-qa-db-fra.com

liste des objets de ManyToManyField

J'essaie d'imprimer une liste de toutes les conférences et pour chaque conférence, d'imprimer ses 3 conférenciers.

Dans mon modèle, j'ai:

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

dans mon fichier views.py j'ai:

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

il existe un modèle nommé conférence. qui a une classe nommée Conferences avec un ManyToManyField nommé speakers

Je reçois l'erreur:

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

avec cette ligne: {% for speakers in conference.speakers %}

50
Noam Smadja

Vous devez appeler all sur le champ plusieurs-à-plusieurs pour obtenir un objet itérable. En outre, la ligne suivante doit contenir le haut-parleur plutôt que conference.speakers.

{% for speaker in conference.speakers.all %}
        <li>{{ speaker }}</li>
{% endfor %}
95
interjay

Un pythoncode similaire à l'intérieur serait:

for speaker in conferenece.speakers.all():
  print speaker.FIELDNAME
16
Rickard Zachrisson