列出 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可变数量的过滤器?

Django 计数嵌套的 ManyToManyField 对象

如何在 Django RestFramework API 中将 manytomanyfield 作为对象返回