ModelAdmin.fields wasn't able to refer to fields only on a custom form

Regressed in r11737 which used get_field instead of opts.get_field and ignoring
fields not found.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@12279 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Brian Rosner 2010-01-23 16:44:42 +00:00
parent dbad025637
commit 4d81874f9d
2 changed files with 20 additions and 1 deletions

View File

@ -211,7 +211,12 @@ def validate_base(cls, model):
# validation of such things. # validation of such things.
continue continue
check_formfield(cls, model, opts, 'fields', field) check_formfield(cls, model, opts, 'fields', field)
f = get_field(cls, model, opts, 'fields', field) try:
f = opts.get_field(field)
except models.FieldDoesNotExist:
# If we can't find a field on the model that matches,
# it could be an extra field on the form.
continue
if isinstance(f, models.ManyToManyField) and not f.rel.through._meta.auto_created: if isinstance(f, models.ManyToManyField) and not f.rel.through._meta.auto_created:
raise ImproperlyConfigured("'%s.fields' can't include the ManyToManyField " raise ImproperlyConfigured("'%s.fields' can't include the ManyToManyField "
"field '%s' because '%s' manually specifies " "field '%s' because '%s' manually specifies "

View File

@ -215,4 +215,18 @@ ImproperlyConfigured: 'FieldsetBookAdmin.fieldsets[1][1]['fields']' can't includ
# the validation will fail. # the validation will fail.
>>> validate(BookAdmin, Book) >>> validate(BookAdmin, Book)
# Regression for ensuring ModelAdmin.fields can contain non-model fields
# that broke with r11737
>>> class SongForm(forms.ModelForm):
... extra_data = forms.CharField()
... class Meta:
... model = Song
>>> class FieldsOnFormOnlyAdmin(admin.ModelAdmin):
... form = SongForm
... fields = ['title', 'extra_data']
>>> validate(FieldsOnFormOnlyAdmin, Song)
"""} """}