【问题标题】:listing objects from ManyToManyField列出 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 %}

【问题讨论】:

    标签: django django-templates many-to-many


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2010-12-22
      • 2021-10-30
      • 2021-09-18
      • 2020-04-22
      • 2016-04-14
      • 1970-01-01
      • 2020-06-11
      • 1970-01-01
      • 2011-01-12
      相关资源
      最近更新 更多