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