2009-03-09 12 views
2

Je parcours la liste des champs de formulaire. Comment identifier le type de chaque champ? Pour checkbox, je peux appeler field.is_checkbox ... y a-t-il des méthodes similaires pour les listes, les champs multiplechoice, etc.?Formulaire API de champ?

Merci

+0

Vous avez la source. Pourquoi avez-vous besoin de faire cela? –

Répondre

-1

présumant que vous utilisez HTML ici ... Parce qu'il est pas très clair.

Que diriez-vous de lui donner une classe supplémentaire.

Et si vous ne saviez pas allready, l'attribut class reconnaîtra ceci:

class="hello there you" 

comme ayant 3 classes. La classe 'bonjour', la classe 'là' et la classe 'vous'. Donc, s'ils ont déjà une classe, ajoutez simplement un espace et votre nom de domaine personnalisé.

3

Jetez un oeil à la classe pour chaque champ sur votre formulaire:

for f_name, f_type in my_form_instance.fields.items(): 
    print "I am a ",type(f_type) 
    # or f_type.__class__ 

Cela produira une sortie similaire à <class 'django.forms.fields.BooleanField'>.

Vous pouvez obtenir le nom comme une chaîne simple, si vous préférez que, avec:

print type(f_type).__name__ 
# produces 'BooleanField' 

Edit: Faites aussi attention sur la distinction entre un champ et un widget. Il n'y a pas de champ Case à cocher dans Django, mais seulement un widget CheckboxInput, qui est la valeur par défaut pour un objet BooleanField. Voulez-vous dire de rechercher le widget (qui est très spécifique au rendu), ou le champ (qui a plus d'une relation avec le type de données et la validation pour ce champ de formulaire)? Si le widget, vous pouvez obtenir le type de widget à l'aide:

f_type.widget 

Hope that helps!

1

Je ne sais pas si c'est ce que vous voulez, mais si vous voulez savoir quel type de terrain, il va finir par être dans le code HTML, vous pouvez le vérifier avec ceci:

{% for field in form %} 
    {{ field.field.widget.input_type }} 
{% endfor %} 

widget.input_type tiendra le texte, mot de passe, sélectionner, etc.

PS Je ne le savais pas jusqu'à il y a 5 secondes. #django irc.freenode.net a toujours une bonne aide.

Questions connexes