2010-11-04 6 views
0

Je dois placer div autour du groupe de champs de formulaire dans le modèle django. façon serait plus facile à faire estcomment générer correctement html pour django modelform

MonFormulaire(). As_table()

copypaste qui et enferment groupe de champs avec div approprié. Le seul problème est que cette approche échoue lorsqu'il y a des erreurs dans la validation de formulaire car {{form.fieldname.errors}} n'est mentionnée nulle part.

De meilleures idées ou des outils prêts à l'emploi qui me sauveraient de faire cela à la main à chaque fois?

ici est la réponse si quelqu'un en a besoin

def generate_object_template(object): 
    from string import Template 
    for field in object._meta.fields: 
      t = Template(""" <label>{{ form.$fieldname.label }}{% if form.$fieldname.is_required %}*{% endif %}</label> 
      {{ form.$fieldname }} 
      {% if form.$fieldname.errors %} {{ form.$fieldname.errors }}{% endif %}""").substitute(fieldname=field.attname)         
      print t 

Répondre

1

Lorsque vous devez personnaliser un formulaire dans Django, vous pouvez faire comme suivre

... 
<label>{{ form.myfield.label }}{% if form.myfield.is_required %}*{% endif %}</label> 
{{ form.myfield }} 
{% if form.myfield.errors %} {{ form.myfield.errors }}{% endif %} 

<label>{{ form.myfield3.label }}{% if form.myfield3.is_required %}*{% endif %}</label> 
{{ form.myfield3 }} 
{% if form.myfield3.errors %} {{ form.myfield3.errors }}{% endif %} 

<label>{{ form.myfield2.label }}{% if form.myfield2.is_required %}*{% endif %}</label> 
{{ form.myfield2 }} 
{% if form.myfield2.errors %} {{ form.myfield2.errors }}{% endif %} 
... 

Avec ce genre de mettre en place, vous pouvez personnaliser votre formulaire ajouter div où vous voulez et toujours garder la validation.

Voir http://docs.djangoproject.com/en/dev/topics/forms/#customizing-the-form-template

+0

ce que vous avez écrit ne me permet pas de mettre div autour de l'élément 3,4,5, juste tous les éléments ou un seul élément – damir

+0

supprimer ok {% pour la boucle%} J'ai fait une erreur Do not Utilisez la boucle for juste mettre vos champs plats – coulix

+1

Je n'ai jamais compris l'inflexibilité ici. C'est mon plus gros (quoique encore petit) reproche à Django. Je fais aussi une "boucle de forme" spéciale avec des variables qui me permettent de faire des choses comme des en-têtes, des étiquettes spéciales, etc. – jMyles

Questions connexes