2010-02-07 3 views
2

Je voudrais écrire une balise de gabarit Django à laquelle je peux passer une variable. Je souhaite que l'étiquette de modèle se comporte différemment selon le type de champ de modèle dont la variable est dérivée (CharField, BooleanField, IntegerField, etc.) ainsi que d'autres informations utilisées dans la définition du champ (longueur_max, etc.)Django - Déterminer le type de champ d'une variable passée à une balise de gabarit

je peux passer la variable à l'étiquette de modèle facilement, à la suite de cette documentation: Passing template variables to the tag

est-il un moyen de déterminer le nom de la classe et les paramètres du modèle du champ de modèle d'origine de la variable?

En d'autres termes: je peux faire un tag comme ceci:

{% template_tag model.field %} 

et dans le rendu de l'étiquette des informations d'accès aux fonctions provenant du modèle?

field = models.CharField(max_length=40) 

Répondre

5

Vous pouvez utiliser la fonction de python type pour déterminer le type de classe.

if type(field) == models.CharField: 
    #CharField specific code 
elif type(field) == models.IntegerField: 
    #IntegerField specific code 
+1

4 ans de retard, mais êtes-vous sûr de ce ... au moins que je suis en train de champ, le type de quelque chose qui est un models.CharField est unicode – Foon

Questions connexes