Optimized ModelAdmin._changeform_view() by avoiding multiple get_fieldsets() calls.
Co-authored-by: Hasan Ramezani <hasan.r67@gmail.com>
This commit is contained in:
parent
26be53dd89
commit
68e018010b
|
@ -1552,7 +1552,10 @@ class ModelAdmin(BaseModelAdmin):
|
||||||
if obj is None:
|
if obj is None:
|
||||||
return self._get_obj_does_not_exist_redirect(request, opts, object_id)
|
return self._get_obj_does_not_exist_redirect(request, opts, object_id)
|
||||||
|
|
||||||
ModelForm = self.get_form(request, obj, change=not add)
|
fieldsets = self.get_fieldsets(request, obj)
|
||||||
|
ModelForm = self.get_form(
|
||||||
|
request, obj, change=not add, fields=flatten_fieldsets(fieldsets)
|
||||||
|
)
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
form = ModelForm(request.POST, request.FILES, instance=obj)
|
form = ModelForm(request.POST, request.FILES, instance=obj)
|
||||||
form_validated = form.is_valid()
|
form_validated = form.is_valid()
|
||||||
|
@ -1583,12 +1586,12 @@ class ModelAdmin(BaseModelAdmin):
|
||||||
formsets, inline_instances = self._create_formsets(request, obj, change=True)
|
formsets, inline_instances = self._create_formsets(request, obj, change=True)
|
||||||
|
|
||||||
if not add and not self.has_change_permission(request, obj):
|
if not add and not self.has_change_permission(request, obj):
|
||||||
readonly_fields = flatten_fieldsets(self.get_fieldsets(request, obj))
|
readonly_fields = flatten_fieldsets(fieldsets)
|
||||||
else:
|
else:
|
||||||
readonly_fields = self.get_readonly_fields(request, obj)
|
readonly_fields = self.get_readonly_fields(request, obj)
|
||||||
adminForm = helpers.AdminForm(
|
adminForm = helpers.AdminForm(
|
||||||
form,
|
form,
|
||||||
list(self.get_fieldsets(request, obj)),
|
list(fieldsets),
|
||||||
# Clear prepopulated fields on a view-only form to avoid a crash.
|
# Clear prepopulated fields on a view-only form to avoid a crash.
|
||||||
self.get_prepopulated_fields(request, obj) if add or self.has_change_permission(request, obj) else {},
|
self.get_prepopulated_fields(request, obj) if add or self.has_change_permission(request, obj) else {},
|
||||||
readonly_fields,
|
readonly_fields,
|
||||||
|
|
Loading…
Reference in New Issue