title: django crispy-forms & floppyforms w/ bootstrap: how to get help_text into a ModelForm?
body: <p>I'm having a small (but annoying) problem with django forms right now.</p>
  
  <p>I'm using:</p>
  
  <ul>
  <li>twitter bootstrap</li>
  <li>django floppyforms (just for the html5 widgets)</li>
  <li>django crispy-forms (for the template tags &amp; rendering)</li>
  <li>my forms are all <strong>ModelForms</strong> and that shouldn't change if possible</li>
  </ul>
  
  <p>I've searched the whole web and tried a lot of stuff, but I can't figure out the place where I can inject help_text="Some random help text" into the code. So here's my code(abbreviated for sanity reasons):</p>
  
  <pre><code>#forms.py:
  
  import floppyforms as forms
  from crispy_forms.helper import FormHelper
  from crispy_forms.layout import *
  from crispy_forms.bootstrap import *
  from courses.models import *
  
  class CourseForm(forms.ModelForm):
      class Meta:
      model = Course
      widgets = {
          'title': forms.TextInput,  # This is a floppyforms widget
          ...
      }
  
      def __init__(self, *args, **kwargs):
          self.helper = FormHelper()
          self.helper.form_method = 'POST'
          self.helper.form_id = ''
          self.helper.form_class = 'form-horizontal'
          self.helper.form_action = ''  # redirect in the view
          self.helper.form_tag = True
          self.helper.help_text_inline = True  # means that I want &lt;span&gt; elements 
          self.helper.layout = Layout(
              Fieldset('Create a new course',  # fieldset label
                  Field('title', placeholder="Something...", css_class="span4"),
                  ...
              ),
              FormActions(
                  Submit(
                      'submit',
                      'Submit',
                      css_class="btn-primary"
                  )
              ),
          )
          super(CourseForm, self).__init__(*args, **kwargs)
  </code></pre>
  
  <p>I tried to inject it as an 'attrs' dict into the widget and as an attr into the Field.</p>
  
  <pre><code>forms.TextInput(attrs={'help_text': 'Some help text'})
  Field('title', help_text="Some help text", css_class="span4")
  </code></pre>
  
  <p>Needless to say that it didn't work. <strong>I need a hook</strong> to put the help text into a 'span' or 'p' inside my controls-div, not into the input widget.</p>
  
  <p>My template is very minimal and it should stay that way if possible. I don't want to iterate over the form fields:</p>
  
  <pre><code>#create_course.html
  
  {% extends 'base.html'%}
  {% load crispy_forms_tags %}
  
  {% block content%}
  {% crispy form %}
  {% endblock content%} 
  </code></pre>
  
  <p>That renders as the following html:</p>
  
  <pre><code>&lt;div id="div_id_title" class="clearfix control-group"&gt;
    &lt;label class="control-label requiredField" for="id_title"&gt;
      Title
      &lt;span class="asteriskField"&gt;*&lt;/span&gt;
    &lt;/label&gt;
    &lt;div class="controls"&gt;
      &lt;input id="id_title" class="span4 textinput textInput" type="text" placeholder="Something..." maxlength="60" required="" name="title"&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  </code></pre>
  
  <p>With the help text it should look like this:</p>
  
  <pre><code>&lt;div id="div_id_title" class="clearfix control-group"&gt;
    &lt;label class="control-label requiredField" for="id_title"&gt;
      Title
      &lt;span class="asteriskField"&gt;*&lt;/span&gt;
    &lt;/label&gt;
    &lt;div class="controls"&gt;
      &lt;input id="id_title" class="span4 textinput textInput" type="text" placeholder="Something..." maxlength="60" required="" name="title"&gt;
      **&lt;span class="help-inline"&gt;Supporting help text&lt;/span&gt;**
    &lt;/div&gt;
  &lt;/div&gt;
  </code></pre>
  
  <p>Any help is appreciated! I haven't tried to inject the code through views.py into the form, but I see no point in doing that. It should be possible to do that in forms.py with the right hook and syntax.</p>
  
  <p>Sorry for the long text for such a simple problem ;)</p>