mirror of
https://github.com/django/django.git
synced 2024-12-25 10:35:48 +00:00
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:
parent
dbad025637
commit
4d81874f9d
@ -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 "
|
||||||
|
@ -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)
|
||||||
|
|
||||||
"""}
|
"""}
|
||||||
|
Loading…
Reference in New Issue
Block a user