Documentation ERPNext

ERPNext

Récupérer des valeurs de table enfant avec Jinja

doc.champ ne suffit pas pour une table enfant. On parcourt ses lignes en Jinja, après avoir lu le nom de la variable dans Personnaliser le formulaire.

1 min de lectureMis à jour le Source : docs.frappe.io

Pourquoi une boucle

Jinja peut citer n'importe quel champ de n'importe quel DocType. Sur un format, {{ doc.field_name }} suffit, où le nom après doc est le nom de variable du champ.

Cela ne marche pas pour une table enfant du DocType. Il faut parcourir ses lignes.

Préparer les noms

Il faut le nom de variable de la table enfant sur le DocType. On le voit dans Personnaliser le formulaire. Il faut aussi les noms de variable des champs de la table, lus de la même façon sur le formulaire de la table enfant.

Liste

La première méthode affiche les lignes en liste non ordonnée. L'exemple officiel parcourt doc.items :

code
{% for row in doc.items %}
* Item Code: {{ row.get_formatted("item_code", doc) }}
Quantity: {{ row.get_formatted("qty", doc) }}
Rate: {{ row.get_formatted("rate", doc) }}
Amount: {{ row.get_formatted("amount", doc) }}
{% endfor %}

Tableau

La seconde méthode affiche les lignes en tableau, avec les colonnes Code article, Quantité, Taux et Montant. Les cellules visibles dans la source sont :

code
{{ item.item_code }}
{{ item.qty }}
{{ item.rate }}
{{ item.amount }}

L'export de la page ne conserve pas le HTML complet de ce second exemple, notamment la boucle qui entoure le tableau. La page dit que ce modèle sert de référence : tout champ supplémentaire de la table enfant se récupère de la même façon, en adaptant le modèle Jinja.