Comment ajouter des class, id, espace réservé attributs d'un champ dans django modèle de formulaires
J'ai un django modèle comme ci-dessous
models.py
class Product(models.Model):
name = models.CharField(max_length = 300)
description = models.TextField(max_length = 2000)
created = models.DateTimeField(auto_now_add = True)
updated = models.DateTimeField(auto_now = True)
def __unicode__(self):
return self.name
forms.py
class ProductForm(ModelForm):
class Meta:
model = Product
exclude = ('updated', 'created')
product_form.py(juste un exemple)
<form enctype="multipart/form-data" action="{% url 'add_a_product' %}" method="post">
<div id="name">
{{form.name}}
</div>
<div id="description">
{{form.description}}
</div>
</form>
En fait, je veux afficher/afficher le code html de sortie comme ci-dessous
<input id="common_id_for_inputfields" type="text" placeholder="Name" class="input-calss_name" name="Name">
<input id="common_id_for_inputfields" type="text" placeholder="Description" class="input-calss_name" name="description">
Donc, finalement, comment faire pour ajouter des attributs(id, espace réservé, la classe)pour le modèle de champs de formulaire dans le code ci-dessus ?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez effectuer les opérations suivantes:
self.fields['description'].widget.attrs={ 'id': 'myCustomId', 'class': 'myCustomClass', 'name': 'myCustomName', 'placeholder': 'myCustomPlaceholder'}
semble Aussi un peu plus propre pour moi.Champ id doit être généré automatiquement par django, pour remplacer d'autres domaines:
form.fields
??? il devrait êtreself.fields
J'aime vraiment Dmitriy Sintsov de la réponse, mais il ne fonctionne pas. Voici une version qui ne fonctionne pas:
mise à jour
ajouter cette condition pour une meilleure
Vous pouvez mettre à jour forms.py comme ci-dessous
Version légèrement modifiée de l'excellent mariodev réponse, en ajoutant de la classe de bootstrap pour tous les champs de formulaire, donc je n'ai pas à re-créer le formulaire de saisie des widgets pour chaque champ manuellement (court Python 3.x super()):
Ajouter à la réponse de Derick Hayes, j'ai créé une classe BasicForm qui s'étend formes.ModelForm qui ajoute le bootstrap classes pour chaque formulaire que l'étend.
Pour mes formes, je viens de prolonger BasicForm au lieu de modèle de formulaire et obtenir automatiquement des classes de bootstrap sur toutes les formes. Je suis allé une étape plus loin et ajouter les classes personnalisées classes css qui peut déjà être là.
add_class filtre pour l'ajout d'une classe CSS champ de formulaire:
django-widget-réglages de la bibliothèque
{% render_field field class+="form-check-input" %}
Vous pouvez effectuer les opérations suivantes: