diff options
| author | Honza Král <Honza.Kral@gmail.com> | 2013-02-23 12:45:39 -0800 |
|---|---|---|
| committer | Honza Král <Honza.Kral@gmail.com> | 2013-02-23 12:45:39 -0800 |
| commit | 10026c2ad0da99591567ba13afe4b489e050ca4a (patch) | |
| tree | af65703760cfef5b6b0a965a94e3a0e87233fb07 /django | |
| parent | 24a2bcbcdd9e76901cd8f8bb38d9d5b6e0bc4fd6 (diff) | |
| parent | b6f4a92ff45d98a63dc29402d8ad86b88e6a6697 (diff) | |
Merge pull request #804 from oinopion/ticket18162
Fixes #18162 -- Specifying choices to Field overrides any form_class argument
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/models/fields/__init__.py | 7 |
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): |
