diff --git a/AUTHORS b/AUTHORS index a0f25e1c12..24e3e5bcac 100644 --- a/AUTHORS +++ b/AUTHORS @@ -297,6 +297,7 @@ answer newbie questions, and generally made Django that much better: peter@mymart.com pgross@thoughtworks.com phaedo + Julien Phalip phil@produxion.net phil.h.smith@gmail.com Gustavo Picon diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py index 07f29acbf0..082d3b3847 100644 --- a/django/contrib/admin/options.py +++ b/django/contrib/admin/options.py @@ -143,12 +143,6 @@ class BaseModelAdmin(object): radio_fields = {} prepopulated_fields = {} - def __init__(self): - # TODO: This should really go in django.core.validation, but validation - # doesn't work on ModelAdmin classes yet. - if self.fieldsets and self.fields: - raise ImproperlyConfigured('Both fieldsets and fields is specified for %s.' % self.model) - def formfield_for_dbfield(self, db_field, **kwargs): """ Hook for specifying the form Field instance for a given database Field diff --git a/django/contrib/admin/validation.py b/django/contrib/admin/validation.py index fbf7de02ed..0d4c2f5607 100644 --- a/django/contrib/admin/validation.py +++ b/django/contrib/admin/validation.py @@ -160,6 +160,8 @@ def _validate_base(cls, model): _check_istuplew('fields', cls.fields) for field in cls.fields: _check_field_existsw('fields', field) + if cls.fieldsets: + raise ImproperlyConfigured('Both fieldsets and fields are specified in %s.' % cls.__name__) # fieldsets if cls.fieldsets: # default value is None diff --git a/tests/regressiontests/modeladmin/models.py b/tests/regressiontests/modeladmin/models.py index 39f8599a78..feb9982786 100644 --- a/tests/regressiontests/modeladmin/models.py +++ b/tests/regressiontests/modeladmin/models.py @@ -338,6 +338,14 @@ ImproperlyConfigured: `ValidationTestModelAdmin.fieldsets[0][1]['fields']` refer ... fieldsets = (("General", {"fields": ("name",)}),) >>> validate(ValidationTestModelAdmin, ValidationTestModel) +>>> class ValidationTestModelAdmin(ModelAdmin): +... fieldsets = (("General", {"fields": ("name",)}),) +... fields = ["name",] +>>> validate(ValidationTestModelAdmin, ValidationTestModel) +Traceback (most recent call last): +... +ImproperlyConfigured: Both fieldsets and fields are specified in ValidationTestModelAdmin. + # form >>> class FakeForm(object):