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

有一个名为会议的模型。 其中有一个名为Conferences的类,名称为ManyToManyField

我得到的错误:

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

用这一行: {% for speakers in conference.speakers %}

你需要在多对多的字段上调用all来获得一个可迭代的对象。 另外,下一行应该包含发言者而不是conference.speakers发言人。

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

类似pythoncode这将是:

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