Подтвердить что ты не робот

Перечисление объектов из ManyToManyField

Я пытаюсь распечатать список всех конференций и для каждой конференции, напечатать 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})

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

Я получаю сообщение об ошибке:

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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