#11905: modelform_factory returns a broken form when given wrong value for
fields
--------------------------------------------------+-------------------------
Reporter: ben | Owner: nobody
Status: new | Milestone:
Component: Forms | Version: 1.1
Keywords: modelform_factory, modelform, fields | Stage: Unreviewed
Has_patch: 0 |
--------------------------------------------------+-------------------------
modelform_factory is breaking where you ask for an invalid fields option
(even if the field exists):
Here's a doctest that demonstrates:
>>> from django.forms.models import modelform_factory, form_for_fields
>>> from django.contrib.auth.models import User
>>> Form = modelform_factory(User, fields=['id', 'username'])
>>> Form.base_fields
{'id': None, 'username': <django.forms.fields.CharField object at
0xd4e4ad0>}
>>> print Form()
------------------------------------------------------------
Traceback (most recent call last):
...
if self.field.label is None:
AttributeError: 'NoneType' object has no attribute 'label'
Likewise you can specify fields that don't even exist on the model:
>>> Form = modelform_factory(User, fields=['no-field', 'username'])
>>> Form.base_fields
{'no-field': None, 'username': <django.forms.fields.CharField object at
0xd4eec10>}
>>> print Form()
------------------------------------------------------------
Traceback (most recent call last):
...
if self.field.label is None:
AttributeError: 'NoneType' object has no attribute 'label'
This appears to be due to logic in form_for_fields (line 102 in my
checkout) in the first case, and fields_for_model (line 170) in the
second.
I'd propose some error handling be put in place to give meaningfull
exception in either of these cases rather than return a broken form to the
user.
I'm happy to submit a patch (I can't do it from here as I'm at work and
don't have direct access to django's svn repo) but I can do it from home.
Ben
--
Ticket URL: <http://code.djangoproject.com/ticket/11905>
Django <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
-~----------~----~----~----~------~----~------~--~---