Skip to content

Commit 5ebfee2

Browse files
committed
Fix: Field for ordering is rendred even for self defined form
When using an `InlineAdmin` with a self defined form, the default ordering has been ignored.
1 parent acc3e3b commit 5ebfee2

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

adminsortable2/admin.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -430,10 +430,13 @@ def __init__(self, default_order_direction=None, default_order_field=None, **kwa
430430
self.default_order_direction = default_order_direction
431431
self.default_order_field = default_order_field
432432
if default_order_field:
433-
if default_order_field not in self.form.base_fields:
434-
self.form.base_fields[default_order_field] = self.model._meta.get_field(default_order_field).formfield()
433+
if default_order_field in self.form.base_fields:
434+
order_field = self.form.base_fields[default_order_field]
435+
else:
436+
order_field = self.model._meta.get_field(default_order_field).formfield()
437+
self.form.base_fields[default_order_field] = order_field
438+
self.form.declared_fields[default_order_field] = order_field
435439

436-
order_field = self.form.base_fields[default_order_field]
437440
order_field.is_hidden = True
438441
order_field.required = False
439442
order_field.widget = widgets.HiddenInput(attrs={'class': '_reorder_'})
@@ -487,6 +490,12 @@ def __init__(self, parent_model, admin_site):
487490
self.default_order_direction, self.default_order_field = _get_default_ordering(self.model, self)
488491
super().__init__(parent_model, admin_site)
489492

493+
def get_fields(self, *args, **kwargs):
494+
fields = super().get_fields(*args, **kwargs)
495+
if self.default_order_field not in fields:
496+
fields.append(self.default_order_field)
497+
return fields
498+
490499

491500
class CustomGenericInlineFormSet(CustomInlineFormSetMixin, BaseGenericInlineFormSet):
492501
def get_max_order(self):

0 commit comments

Comments
 (0)