列出 ManyToManyField 中的对象
Posted
技术标签:
【中文标题】列出 ManyToManyField 中的对象【英文标题】:listing objects from ManyToManyField 【发布时间】:2011-02-15 02:46:00 【问题描述】:我正在尝试打印所有会议的列表,并为每个会议打印其 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。其中有一个名为 Conferences 的类和一个名为 speakers
的 ManyToManyField我得到错误:
Caught an exception while rendering: 'ManyRelatedManager' object is not iterable
使用这一行:% for speakers in conference.speakers %
【问题讨论】:
【参考方案1】:您需要在多对多字段上调用all
以获取可迭代对象。此外,下一行应该包含说话者而不是conference.speakers
。
% for speaker in conference.speakers.all %
<li> speaker </li>
% endfor %
【讨论】:
非常感谢 :) 并没有我想的那么远! 如果在我看来我希望将 ManyRelatedManager 转换为列表以传递查询?【参考方案2】:在 pythoncode 中类似:
for speaker in conferenece.speakers.all():
print speaker.FIELDNAME
【讨论】:
以上是关于列出 ManyToManyField 中的对象的主要内容,如果未能解决你的问题,请参考以下文章
如何正确查询列表(或另一个 ManyToManyField)中所有对象的 ManyToManyField?
删除 django 模型中不相关的对象(manytomanyfield)
Django:ManyToManyField,如果对象不存在则添加它
ManyToManyField对象上的Django可变数量的过滤器?