summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorTomek Paczkowski <tomek@hauru.eu>2013-02-23 19:01:38 +0100
committerTomek Paczkowski <tomek@hauru.eu>2013-02-23 19:01:38 +0100
commitb6f4a92ff45d98a63dc29402d8ad86b88e6a6697 (patch)
tree01915d283e1af66c00fbc4204d5a2fd5d9a3ce96 /django
parentf3ae67a62f5bdcee892f19667967e8738f734908 (diff)
Proposed fix for #18162.
Diffstat (limited to 'django')
-rw-r--r--django/db/models/fields/__init__.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index b70d235656..279c712a98 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -467,7 +467,7 @@ class Field(object):
def save_form_data(self, instance, data):
setattr(instance, self.name, data)
- def formfield(self, form_class=forms.CharField, **kwargs):
+ def formfield(self, form_class=None, **kwargs):
"""
Returns a django.forms.Field instance for this database Field.
"""
@@ -488,7 +488,8 @@ class Field(object):
defaults['coerce'] = self.to_python
if self.null:
defaults['empty_value'] = None
- form_class = forms.TypedChoiceField
+ if form_class is None or not issubclass(form_class, forms.TypedChoiceField):
+ form_class = forms.TypedChoiceField
# Many of the subclass-specific formfield arguments (min_value,
# max_value) don't apply for choice fields, so be sure to only pass
# the values that TypedChoiceField will understand.
@@ -498,6 +499,8 @@ class Field(object):
'error_messages', 'show_hidden_initial'):
del kwargs[k]
defaults.update(kwargs)
+ if form_class is None:
+ form_class = forms.CharField
return form_class(**defaults)
def value_from_object(self, obj):