#8436: Silent crash in forms rendering
---------------------------------+------------------------------------------
          Reporter:  stilldodge  |         Owner:  nobody      
            Status:  reopened    |     Milestone:              
         Component:  Forms       |       Version:  SVN         
        Resolution:              |      Keywords:  errors, Form
             Stage:  Unreviewed  |     Has_patch:  0           
        Needs_docs:  0           |   Needs_tests:  0           
Needs_better_patch:  0           |  
---------------------------------+------------------------------------------
Changes (by stilldodge):

  * status:  closed => reopened
  * resolution:  fixed =>

Comment:

 With latest 8880 svn this still happens, this is based on current
 ModelForm docs for overriding fields

 {{{
 class TestModel(models.Model):
     errors = models.CharField(max_length=100)

 tm = TestModel()

 class TestForm(forms.ModelForm):
     errors=forms.CharField(widget=forms.HiddenInput)

     class Meta:
         model = TestModel

 tf=TestForm(tm)

 tf.as_table()

 In [9]: tf.as_table()
 ---------------------------------------------------------------------------
 AttributeError                            Traceback (most recent call
 last)

 C:\dev\scms\<ipython console> in <module>()

 c:\django\django\forms\forms.py in as_table(self)
     181     def as_table(self):
     182         "Returns this form rendered as HTML <tr>s -- excluding the
 <table></table>."
 --> 183         return
 
self._html_output(u'<tr><th>%(label)s</th><td>%(errors)s%(field)s%(help_text)s</td></tr>',
 u'<tr><td colspan=
 "2">%s</td></tr>', '</td></tr>', u'<br />%s', False)
     184
     185     def as_ul(self):

 c:\django\django\forms\forms.py in _html_output(self, normal_row,
 error_row, row_ender, help_text_html, errors_on_separate_row)
     137     def _html_output(self, normal_row, error_row, row_ender,
 help_text_html, errors_on_separate_row):
     138         "Helper function for outputting HTML. Used by as_table(),
 as_ul(), as_p()."
 --> 139         top_errors = self.non_field_errors() # Errors that should
 be displayed above all fields.
     140         output, hidden_fields = [], []
     141         for name, field in self.fields.items():

 c:\django\django\forms\forms.py in non_field_errors(self)
     197         are none.
     198         """
 --> 199         return self.errors.get(NON_FIELD_ERRORS,
 self.error_class())
     200
     201     def full_clean(self):

 c:\django\django\forms\forms.py in _get_errors(self)
     109         "Returns an ErrorDict for the data provided for the form"
     110         if self._errors is None:
 --> 111             self.full_clean()
     112         return self._errors
     113     errors = property(_get_errors)

 c:\django\django\forms\forms.py in full_clean(self)
     216             # Each widget type knows how to retrieve its own data,
 because some
     217             # widgets split data over several HTML fields.
 --> 218             value = field.widget.value_from_datadict(self.data,
 self.files, self.add_prefix(name))
     219             try:
     220                 if isinstance(field, FileField):

 c:\django\django\forms\widgets.py in value_from_datadict(self, data,
 files, name)
     168         of this widget. Returns None if it's not provided.
     169         """
 --> 170         return data.get(name, None)
     171
     172     def _has_changed(self, initial, data):

 AttributeError: 'TestModel' object has no attribute 'get'

 In [10]:

 }}}

-- 
Ticket URL: <http://code.djangoproject.com/ticket/8436#comment:3>
Django Code <http://code.djangoproject.com/>
The web framework for perfectionists with deadlines
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to