1
0
mirror of https://github.com/django/django.git synced 2025-10-24 06:06:09 +00:00

Fixed #31867 -- Made TabularInline handling of hidden fields with view-only permissions consistent with StackedInline.

This commit is contained in:
antoinehumbert
2020-08-12 21:34:20 +02:00
committed by Mariusz Felisiak
parent 06e59d97a3
commit de95c82667
6 changed files with 184 additions and 20 deletions

View File

@@ -342,6 +342,35 @@ class ClassAdminStackedVertical(admin.ModelAdmin):
inlines = [ClassStackedVertical]
class ChildHiddenFieldForm(forms.ModelForm):
class Meta:
model = SomeChildModel
fields = ['name', 'position', 'parent']
widgets = {'position': forms.HiddenInput}
def _post_clean(self):
super()._post_clean()
if self.instance is not None and self.instance.position == 1:
self.add_error(None, ValidationError('A non-field error'))
class ChildHiddenFieldTabularInline(admin.TabularInline):
model = SomeChildModel
form = ChildHiddenFieldForm
class ChildHiddenFieldInFieldsGroupStackedInline(admin.StackedInline):
model = SomeChildModel
form = ChildHiddenFieldForm
fields = [('name', 'position')]
class ChildHiddenFieldOnSingleLineStackedInline(admin.StackedInline):
model = SomeChildModel
form = ChildHiddenFieldForm
fields = ('name', 'position')
site.register(TitleCollection, inlines=[TitleInline])
# Test bug #12561 and #12778
# only ModelAdmin media
@@ -373,3 +402,10 @@ site.register(Course, ClassAdminStackedHorizontal)
site.register(CourseProxy, ClassAdminStackedVertical)
site.register(CourseProxy1, ClassAdminTabularVertical)
site.register(CourseProxy2, ClassAdminTabularHorizontal)
# Used to test hidden fields in tabular and stacked inlines.
site2 = admin.AdminSite(name='tabular_inline_hidden_field_admin')
site2.register(SomeParentModel, inlines=[ChildHiddenFieldTabularInline])
site3 = admin.AdminSite(name='stacked_inline_hidden_field_in_group_admin')
site3.register(SomeParentModel, inlines=[ChildHiddenFieldInFieldsGroupStackedInline])
site4 = admin.AdminSite(name='stacked_inline_hidden_field_on_single_line_admin')
site4.register(SomeParentModel, inlines=[ChildHiddenFieldOnSingleLineStackedInline])