Skip to content

Commit

Permalink
Fix UnboundLocalError than could occur during ModelAdmin validation.
Browse files Browse the repository at this point in the history
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16262 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
kmtracey committed May 22, 2011
1 parent d95355b commit 909e002
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
6 changes: 3 additions & 3 deletions django/contrib/admin/validation.py
Expand Up @@ -247,9 +247,9 @@ def validate_fields_spec(cls, model, opts, flds, label):
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.
pass
# If we can't find a field on the model that matches, it could be an
# extra field on the form; nothing to check so move on to the next field.
continue
if isinstance(f, models.ManyToManyField) and not f.rel.through._meta.auto_created:
raise ImproperlyConfigured("'%s.%s' "
"can't include the ManyToManyField field '%s' because "
Expand Down
16 changes: 16 additions & 0 deletions tests/regressiontests/admin_validation/tests.py
Expand Up @@ -256,3 +256,19 @@ class FieldsOnFormOnlyAdmin(admin.ModelAdmin):
fields = ['title', 'extra_data']

validate(FieldsOnFormOnlyAdmin, Song)

def test_non_model_first_field(self):
"""
Regression for ensuring ModelAdmin.field can handle first elem being a
non-model field (test fix for UnboundLocalError introduced with r16225).
"""
class SongForm(forms.ModelForm):
extra_data = forms.CharField()
class Meta:
model = Song

class FieldsOnFormOnlyAdmin(admin.ModelAdmin):
form = SongForm
fields = ['extra_data', 'title']

validate(FieldsOnFormOnlyAdmin, Song)

0 comments on commit 909e002

Please sign in to comment.