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:
committed by
Mariusz Felisiak
parent
06e59d97a3
commit
de95c82667
@@ -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])
|
||||
|
||||
Reference in New Issue
Block a user