Fix UnboundLocalError than could occur during ModelAdmin validation.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16262 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
d95355b6db
commit
909e002808
|
@ -247,9 +247,9 @@ def validate_fields_spec(cls, model, opts, flds, label):
|
||||||
try:
|
try:
|
||||||
f = opts.get_field(field)
|
f = opts.get_field(field)
|
||||||
except models.FieldDoesNotExist:
|
except models.FieldDoesNotExist:
|
||||||
# If we can't find a field on the model that matches,
|
# If we can't find a field on the model that matches, it could be an
|
||||||
# it could be an extra field on the form.
|
# extra field on the form; nothing to check so move on to the next field.
|
||||||
pass
|
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.%s' "
|
raise ImproperlyConfigured("'%s.%s' "
|
||||||
"can't include the ManyToManyField field '%s' because "
|
"can't include the ManyToManyField field '%s' because "
|
||||||
|
|
|
@ -256,3 +256,19 @@ class ValidationTestCase(TestCase):
|
||||||
fields = ['title', 'extra_data']
|
fields = ['title', 'extra_data']
|
||||||
|
|
||||||
validate(FieldsOnFormOnlyAdmin, Song)
|
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)
|
||||||
|
|
Loading…
Reference in New Issue