tags:

views:

221

answers:

2

I have a simple form

class MyForm(forms.Form):
    ...
    fieldname = forms.CharField(help_text="Some help text")

I can then display this form with django's handy {{ form.as_ul }} if I like, now I need to stylise the help_text and I have no idea how. Django doesn't appear to wrap that string in anything that will let my CSS get to it so at the moment, I've restored to:

class MyForm(forms.Form):
    ...
    fieldname = forms.CharField(help_text='<div class="helptext">Some help text</div>')

Which I know is wrong so I'm looking here for better advice.

A: 

I guess there is no other way, otherwise there probably wouldn't be a need for this ticket: http://code.djangoproject.com/ticket/8426.

You could apply the patch that is provided there.

Felix Kling
+3  A: 

There's only that much you can customize in UI from form options. The more flexible way to approach a problem is to create your own form template then and reuse it instead of {{ form.as_something }}. Read these topics from Django documentation:

  1. Customizing form templates
  2. Reuseable form templates

This worked very well when I needed significantly customized form marks yet keeping it DRY.

Alex Lebedev
Agreed. form.as_* is for quick prototyping only; real form layout requires doing it in the template. Not necessarily field-by-field; in most cases I just loop through the fields and present each one with the same HTML.
Carl Meyer