web-dev-qa-db-ja.com

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

conferenceという名前のモデルがあります。 会議というクラスと、ManyToManyFieldという名前のクラスがあり、スピーカー

エラーが表示されます:

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

この行で:{% for speakers in conference.speakers %}

50
Noam Smadja

反復可能なオブジェクトを取得するには、多対多フィールドでallを呼び出す必要があります。また、次の行にはconference.speakersではなくスピーカーが含まれている必要があります。

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

同様のpythoncode内部は次のようになります。

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