Improved model validator to check admin.list_filter and type-check admin.list_display
git-svn-id: http://code.djangoproject.com/svn/django/trunk@784 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
c3fa47edb8
commit
8dda2aeaa3
|
@ -549,16 +549,29 @@ def get_validation_errors(outfile):
|
||||||
if not isinstance(opts.admin, meta.Admin):
|
if not isinstance(opts.admin, meta.Admin):
|
||||||
e.add(opts, '"admin" attribute, if given, must be set to a meta.Admin() instance.')
|
e.add(opts, '"admin" attribute, if given, must be set to a meta.Admin() instance.')
|
||||||
else:
|
else:
|
||||||
for fn in opts.admin.list_display:
|
# list_display
|
||||||
try:
|
if not isinstance(opts.admin.list_display, (list, tuple)):
|
||||||
f = opts.get_field(fn)
|
e.add(opts, '"admin.list_display", if given, must be set to a list or tuple.')
|
||||||
except meta.FieldDoesNotExist:
|
else:
|
||||||
klass = opts.get_model_module().Klass
|
for fn in opts.admin.list_display:
|
||||||
if not hasattr(klass, fn) or not callable(getattr(klass, fn)):
|
try:
|
||||||
e.add(opts, '"admin.list_display" refers to %r, which isn\'t a field or method.' % fn)
|
f = opts.get_field(fn)
|
||||||
else:
|
except meta.FieldDoesNotExist:
|
||||||
if isinstance(f, meta.ManyToManyField):
|
klass = opts.get_model_module().Klass
|
||||||
e.add(opts, '"admin.list_display" doesn\'t support ManyToManyFields (%r).' % fn)
|
if not hasattr(klass, fn) or not callable(getattr(klass, fn)):
|
||||||
|
e.add(opts, '"admin.list_display" refers to %r, which isn\'t a field or method.' % fn)
|
||||||
|
else:
|
||||||
|
if isinstance(f, meta.ManyToManyField):
|
||||||
|
e.add(opts, '"admin.list_display" doesn\'t support ManyToManyFields (%r).' % fn)
|
||||||
|
# list_filter
|
||||||
|
if not isinstance(opts.admin.list_filter, (list, tuple)):
|
||||||
|
e.add(opts, '"admin.list_filter", if given, must be set to a list or tuple.')
|
||||||
|
else:
|
||||||
|
for fn in opts.admin.list_filter:
|
||||||
|
try:
|
||||||
|
f = opts.get_field(fn)
|
||||||
|
except meta.FieldDoesNotExist:
|
||||||
|
e.add(opts, '"admin.list_filter" refers to %r, which isn\'t a field.' % fn)
|
||||||
|
|
||||||
# Check ordering attribute.
|
# Check ordering attribute.
|
||||||
if opts.ordering:
|
if opts.ordering:
|
||||||
|
|
Loading…
Reference in New Issue