Вопрос по Django: отображение множества полей - PullRequest
2 голосов
/ 08 октября 2010

Кажется, у меня есть проблема с Django, когда дело касается рендеринга ManyToManyField в шаблоне.Я могу заставить его работать частично, но я не могу заставить его работать должным образом.

Во-первых, у меня есть шаблон счета, который отображает детали счета из моей базы данных

#invoice_details.html
{% extends "base.html" %}

{% block content %}
<h2>Invoice Details</h2>
<div id="horizontalnav">
  <a href="/index/add_invoice">Add an Invoice</a>
  <a href="/index/work_orders">Add a Work Order</a>
  <a href="/index/add_payment">Add Payment</a>
</div>
<ul>
  <div id="list">
     {% for invoice in invoices_list %}
       {{invoice.client}}<br/>
       {{invoice.invoice_no}}<br/>
       {{invoice.contract_info}}<br/>
       {{invoice.date}}<br/>
       {{invoice.work_orders}}<br/>
     {% endfor %}
    </div>
</ul>
{% endblock %}

В базе данных {{invoice.work_orders}} отображалось, как показано ниже.Это потому, что {{invoice.work_orders}} использует поле manytomany

<django.db.models.fields.related.ManyRelatedManager object at 0x8a811ec>

Теперь я попытался изменить {{invoice.work_orders}} на {{invoice.work_orders.all}} и получил это.

[<Work_Order: Assurance Support Service >]

Этот вид работает, но я хочу, чтобы он отображал только «Служба поддержки Assurance».Поэтому мне интересно, как я могу сделать это изменение, если это возможно.

1 Ответ

5 голосов
/ 08 октября 2010

Содержимое {{invoice.work_orders.all} представляет собой список Work_Order объектов.
Если вы хотите распечатать их, вы должны перебрать список:

{% for invoice in invoice.work_orders.all %}
  {{invoice}}<br />
{% endfor %}
...