diff options
| author | Nick Sandford <nick@sandford.id.au> | 2013-02-02 13:21:50 -0800 |
|---|---|---|
| committer | Julien Phalip <jphalip@gmail.com> | 2013-02-02 14:55:59 -0800 |
| commit | e18bd68dbc64dfe08ae0fbb54591d5c8f7e456eb (patch) | |
| tree | 3dbee34af7f41b33f342663317af7acec8b3affc /django | |
| parent | f28fbe7314712d3e594a0f6509361378162cc7ea (diff) | |
[1.5.x] Fixed #19445 -- Skip admin fieldsets validation when the ModelAdmin.get_form() method is overridden.
Backport of 0694d2196f0fad
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/admin/validation.py | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/django/contrib/admin/validation.py b/django/contrib/admin/validation.py index 733f89d06f..a02bb7a316 100644 --- a/django/contrib/admin/validation.py +++ b/django/contrib/admin/validation.py @@ -6,7 +6,7 @@ from django.forms.models import (BaseModelForm, BaseModelFormSet, fields_for_mod from django.contrib.admin import ListFilter, FieldListFilter from django.contrib.admin.util import get_fields_from_path, NotRelationField from django.contrib.admin.options import (flatten_fieldsets, BaseModelAdmin, - HORIZONTAL, VERTICAL) + ModelAdmin, HORIZONTAL, VERTICAL) __all__ = ['validate'] @@ -388,12 +388,14 @@ def check_formfield(cls, model, opts, label, field): raise ImproperlyConfigured("'%s.%s' refers to field '%s' that " "is missing from the form." % (cls.__name__, label, field)) else: - fields = fields_for_model(model) - try: - fields[field] - except KeyError: - raise ImproperlyConfigured("'%s.%s' refers to field '%s' that " - "is missing from the form." % (cls.__name__, label, field)) + get_form_is_overridden = hasattr(cls, 'get_form') and cls.get_form != ModelAdmin.get_form + if not get_form_is_overridden: + fields = fields_for_model(model) + try: + fields[field] + except KeyError: + raise ImproperlyConfigured("'%s.%s' refers to field '%s' that " + "is missing from the form." % (cls.__name__, label, field)) def fetch_attr(cls, model, opts, label, field): try: |
