J'essaie de rendre le résultat d'une balise de gabarit dépendant d'un autre balise de gabarit. le cas d'utilisation est le suivant. J'ai une liste d'en-têtes qui contient toutes les colonnes que je veux montrer dans un tableau + la colonne du modèle qu'ils montrent + qu'ils soient visibles ou non.Modèle django templatetags, combiner {{}} appel de méthode avec une variable de contexte de balise de gabarit
LIST_HEADERS = (
('Title', 'title', True),
('First Name', 'first_name', True),
('Last Name', 'last_name', True),
('Modified At', 'modified', False),
)
maintenant j'ai un modèle qui imprime tous les en-têtes. par conséquent, je voulais créer une étiquette de modèle qui imprime le corps de la table. par conséquent, je veux prendre la liste des en-têtes et vérifier quel en-tête est visible et que je veux afficher ou masquer ma valeur.
donc je créé le modèle de templatetag ci-dessous:
<tr class="{% cycle odd,even %}">
{% for header in headers %}
{% if header.visible %}
<td><a href="{{ model_instance.get_absolute_url|escape }}">{{ model_instance.title }}</a></td>
{% else %}
<td style="visibility:hidden;"><a href="{{ model_instance.get_absolute_url|escape }}">{{ model_instance.title }}</a></td>
{% endif %}
{% endfor %}
</tr>
vous voyez la valeur {{}} model_instance.title là. cette valeur que je veux changer en model_instance.title, model_instance.first_name, model_instance.last_name, ... à l'exécution.
Ainsi, je cherche un moyen de combiner {{model_instance}} avec header.model_column. La colonne model_column est égale à la deuxième entrée des LIST_HEADERS.
Ainsi model_column serait un titre, prenom, ..
donc la solution serait quelque chose comme [pseudocode] {{model_instance.header.model_column}} [pseudocode]
..thus je recherche une manière dont je peux combiner un appel de méthode de modèle de django avec un attribut de balise de modèle de django..huh .. semble fou: D
J'espère que je l'ai expliqué assez bon! il y a probablement une solution beaucoup plus facile à mon problème. mais cela me semble assez générique et facile et ça marcherait.
merci. Je pense que je vais essayer! semble bon et facile. –