title: WTForms: nested form field, UndefinedError: 'unicode object' has no attribute 'label'
body: <p>My form model is defined like this:</p>
  
  <pre><code>from com.example.cms.forms import FieldList as MyAppFieldList
  from flask_wtf                 import Form
  from wtforms                   import fields
  from wtforms                   import validators
  
  class FacebookPostTranslationForm(Form):
      language    = fields.StringField('Language', [validators.InputRequired(), validators.Length(min=2, max=2)])
      title       = fields.TextAreaField('Title', [validators.InputRequired()])
      description = fields.TextAreaField('Description', [validators.InputRequired()])
      linkUrl     = fields.StringField('Link', [validators.InputRequired(), validators.URL()])
      pictureUrl  = fields.StringField('Picture', [validators.InputRequired(), validators.URL()])
  
  class FacebookPostTemplateForm(Form):
      name         = fields.StringField('Name', [validators.InputRequired()])
      title        = fields.TextAreaField('Title', [validators.InputRequired()])
      description  = fields.TextAreaField('Description', [validators.InputRequired()])
      linkUrl      = fields.StringField('Link', [validators.InputRequired(), validators.URL()])
      pictureUrl   = fields.StringField('Picture', [validators.InputRequired(), validators.URL()])
      translations = MyAppFieldList(fields.FormField(FacebookPostTranslationForm), [validators.Optional()])
  
  class FacebookPostTemplateCreateForm(FacebookPostTemplateForm):
      pass
  
  class FacebookPostTemplateUpdateForm(FacebookPostTemplateForm):
      pass
  </code></pre>
  
  <p>and then inside HTML template I have:</p>
  
  <pre><code>&lt;span id="translationFieldsetHolder"&gt;
      {% for translation in form.translations.entries %}
          &lt;fieldset class="translationFieldset"&gt;
              &lt;legend&gt;{% if translation.language.data %}{{ translation.language.data|upper }}{% else %}Add{% endif %} Translation&lt;/legend&gt;
              {{ render_field(translation.language) }}
              {{ render_field(translation.title, rows=5) }}
              {{ render_field(translation.description, rows=5) }}
              {{ render_field(translation.linkUrl) }}
              {{ render_field(translation.pictureUrl) }}
              {{ translation.csrf_token }}            
          &lt;/fieldset&gt;
      {% endfor %}
  &lt;/span&gt;
  </code></pre>
  
  <p>Everything but <em>translation.description</em> renders fine. Namely this line causes problems:</p>
  
  <pre><code>{{ render_field(translation.description, rows=5) }}
  </code></pre>
  
  <p>If I replace <em>description</em> with <em>title</em> it works fine (although it renders <em>title</em> twice instead of <em>title</em> plus <em>description</em>).</p>
  
  <p>With <em>description</em> I get the following error:</p>
  
  <pre><code>{{ field.label(class="control-label") }}
  UndefinedError: 'unicode object' has no attribute 'label' 
  </code></pre>
  
  <p>in the macro that starts with:</p>
  
  <pre><code>{% macro render_field(field) %}
      &lt;div class="control-group {% if field.errors %}error{% endif %}"&gt;
          {{ field.label(class="control-label") }}
  </code></pre>
  
  <p>I'm quite new to Python or WTForms. Is there anything special with <em>description</em> field name that could cause some problems / clashes?</p>
  
  <p>I can see that the data is correctly delivered to the controller via the web service. There is nothing suspicious in the value of this field.</p>
  
  <p>The <a href="https://www.dropbox.com/s/zpkcrtympwotesb/DescriptionTest.zip?dl=0" rel="nofollow">sample code</a> to be run. It was extracted from the original sources so at some places it is a mess.</p>
  
  <p>If I change the name of the field it works :(
  But it implies I would have to either change it on the web service or somewhere in Python code.</p>
  
  <p>Thank you.</p>