2010-10-08 7 views
2

Je semble avoir un problème avec Django quand il s'agit de rendre ManyToManyField dans un template. Je peux le faire fonctionner partiellement, mais je ne peux pas le faire fonctionner correctement comme je le veux.Question sur Django: Afficher de nombreux champs

Tout d'abord j'ai un modèle de facture qui affiche les détails des factures de ma base de données

#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 %} 

Dans ma base de données, {{}} invoice.work_orders a été affiché comme suit ci-dessous. En effet, {{}} invoice.work_orders utilise un ManyToManyField

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

Maintenant, j'essayé de changer {{invoice.work_orders}} pour {{}} invoice.work_orders.all et moi avons cela.

[<Work_Order: Assurance Support Service >] 

Ce genre de travaux, mais je veux qu'il affiche "Assurance Support Service" seulement. Alors je me demande comment je peux faire ce changement si possible.

Répondre

5

Le contenu de {{invoice.work_orders.all} est une liste d'objets Work_Order.
Si vous voulez les imprimer, vous devez itérer la liste:

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

Merci. Cela a fonctionné. – Shehzad009

+0

Merci pour cela;) – Darren

Questions connexes