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):