список объектов из ManyToManyField - PullRequest
49 голосов
/ 03 мая 2010

Я пытаюсь распечатать список всех конференций, и для каждой конференции выведите 3 динамика.

В моем шаблоне у меня есть:

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

в моем файле 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})

существует модель с именем конференция . который имеет класс с именем Conferences с ManyToManyField с именем динамики

Я получаю ошибку:

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

с этой строкой: {% for speakers in conference.speakers %}

Ответы [ 2 ]

93 голосов
/ 03 мая 2010

Вам нужно вызвать all в поле «многие ко многим», чтобы получить итеративный объект. Кроме того, следующая строка должна содержать динамик, а не conference.speakers.

{% for speaker in conference.speakers.all %}
        <li>{{ speaker }}</li>
{% endfor %}
16 голосов
/ 28 ноября 2012

Аналогично внутри Pythoncode это будет:

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