2009-08-28 7 views

Répondre

5

Vous ne savez pas de quoi vous parlez. Voulez-vous dire une balise HTML < entrée > générée par django.forms? Si c'est le cas, spécifiez simplement un widget personnalisé, en utilisant l'attribut attrs dans le constructeur. Voir docs.

+0

Oui, c'est ce que je veux dire. et je connais l'objet attr que je peux définir. Cependant, les formulaires générés automatiquement à partir de la classe django.models ne semblent pas le permettre. –

+0

Pour personnaliser le widget, déclarez le champ dans votre classe de formulaire. Vous devez le faire pour chaque champ auquel vous voulez ajouter un attribut de classe. Voir http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#overriding-the-default-field-types – michael

1

Vous avez juste besoin de remplacer le champ approprié dans votre classe de formulaire, et ajoutez votre attribut au widget. Ceci est décrit clairement in the documentation.

+0

Il n'y a pas de classe de formulaire. c'est une classe de modèle. –

+0

Vous devez avoir une classe de formulaire quelque part, même si elle n'a que la déclaration meta 'class = MyModel'. Ou voulez-vous dire un formulaire généré dans l'admin? Si oui, veuillez le dire. –

3

django-html fournit une templatetag qui vous permet d'ajouter des attributs supplémentaires dans le modèle, comme ceci:

{% field form.fieldname class="myclass" %} 
0

Je ne pense pas que ceux-ci est particulièrement ce que le demandeur cherchait et maintenant quelques années Après la publication de la question, cela peut être fait beaucoup plus intuitivement. Je pense que le demandeur souhaite que le champ ModelForm rende la balise d'entrée avec un attribut de classe que vous définissez dans votre vue.

Si oui, la réponse est ici:

How do I set default widget attributes for a Django ModelForm?

En effet, ce fut peut-être le cas même retour en 09, auquel cas les autres réponses doivent être downvoted. Mais je ne travaillais pas avec Django à l'époque donc je vais laisser ça aux autres.

Questions connexes