Django

Code

Ticket #5794 (closed: fixed)

Opened 1 year ago

Last modified 1 year ago

[patch] newforms DateTimeInput breaks form_for_model rendering

Reported by: MikeH <mike@mugwuffin.com> Assigned to: nobody
Milestone: Component: Forms
Version: SVN Keywords:
Cc: Triage Stage: Accepted
Has patch: 1 Needs documentation: 0
Needs tests: 0 Patch needs improvement: 0

Description (Last modified by mtredinnick)

Using revision 6593, I have the following problem when rendering forms for models that have DateTimeFields?

mikeh@tk421:~/tthome$ ./manage.py shell
Python 2.5.1 (r251:54863, Oct  5 2007, 13:36:32)
[GCC 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)

from tthome.events.models import Event

import django.newforms as forms

f = forms.form_for_model(Event)

form = f()

print form

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/lib/python2.5/site-packages/django/utils/encoding.py", line 13, in __str__
    return self.__unicode__().encode('utf-8')
  File "/usr/lib/python2.5/site-packages/django/newforms/forms.py", line 80, in __unicode__
    return self.as_table()
  File "/usr/lib/python2.5/site-packages/django/newforms/forms.py", line 159, in as_table
    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)
  File "/usr/lib/python2.5/site-packages/django/newforms/forms.py", line 144, in _html_output
    output.append(normal_row % {'errors': force_unicode(bf_errors), 'label': force_unicode(label), 'field': unicode(bf), 'help_text': help_text})
  File "/usr/lib/python2.5/site-packages/django/newforms/forms.py", line 251, in __unicode__
    return self.as_widget()
  File "/usr/lib/python2.5/site-packages/django/newforms/forms.py", line 279, in as_widget
    return widget.render(self.html_name, data, attrs=attrs)
  File "/usr/lib/python2.5/site-packages/django/newforms/widgets.py", line 165, in render
    value.strftime(self.format), attrs)
AttributeError: 'NoneType' object has no attribute 'strftime'

The attached patch fixes this behavior, but it might not be the best solution...

Attachments

widgetpatch.diff (0.6 kB) - added by MikeH <mike@mugwuffin.com> on 10/22/07 07:29:14.
Detects for None when rendering

Change History

10/22/07 07:29:14 changed by MikeH <mike@mugwuffin.com>

  • attachment widgetpatch.diff added.

Detects for None when rendering

10/22/07 07:36:18 changed by mtredinnick

  • needs_better_patch changed.
  • stage changed from Unreviewed to Accepted.
  • description changed.
  • needs_tests changed.
  • needs_docs changed.

Wow. I'm an idiot. Not sure how I missed testing that case. Sorry about that.

Your patch looks like the right idea.

10/22/07 08:13:12 changed by mtredinnick

  • status changed from new to closed.
  • resolution set to fixed.

(In [6594]) Fixed #5794 -- Be more robust when rendering a DateTimeInput? widget. Thanks, MikeH.


Add/Change #5794 ([patch] newforms DateTimeInput breaks form_for_model rendering)




Change Properties
Action