Skip to content

Commit 8ebc835

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents 6b85271 + ef36b8b commit 8ebc835

File tree

3 files changed

+24
-8
lines changed

3 files changed

+24
-8
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
## Release history of [django-admin-sortable2](https://github.com/jrief/django-admin-sortable2/)
44

5+
### 2.0.5
6+
- Fix: When using an `InlineAdmin` with a self defined form, the default ordering
7+
has been ignored.
8+
- Fix: Skip instance check, if model used in an `InlineAdmin` is a proxy model.
9+
10+
511
### 2.0.4
612
- Fix [\#309](https://github.com/jrief/django-admin-sortable2/issues/309):
713
Prevent JavaScrip error when using *InlineAdmin without sortable list view.

adminsortable2/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '2.0.4'
1+
__version__ = '2.0.5'

adminsortable2/admin.py

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

437-
order_field = self.form.base_fields[default_order_field]
438441
order_field.is_hidden = True
439442
order_field.required = False
440443
order_field.widget = widgets.HiddenInput(attrs={'class': '_reorder_'})
@@ -480,13 +483,20 @@ class SortableInlineAdminMixin:
480483
formset = CustomInlineFormSet
481484

482485
def __init__(self, parent_model, admin_site):
483-
assert isinstance(admin_site._registry[parent_model], SortableAdminBase), \
484-
"{} must inherit from SortableAdminBase since {} inherits from SortableInlineAdminMixin.".format(
485-
admin_site._registry[parent_model], self.__class__.__name__
486-
)
486+
if parent_model in admin_site._registry:
487+
assert isinstance(admin_site._registry[parent_model], SortableAdminBase), \
488+
"{} must inherit from SortableAdminBase since {} inherits from SortableInlineAdminMixin.".format(
489+
admin_site._registry[parent_model], self.__class__.__name__
490+
)
487491
self.default_order_direction, self.default_order_field = _get_default_ordering(self.model, self)
488492
super().__init__(parent_model, admin_site)
489493

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

491501
class CustomGenericInlineFormSet(CustomInlineFormSetMixin, BaseGenericInlineFormSet):
492502
def get_max_order(self):

0 commit comments

Comments
 (0)