@@ -65,6 +65,26 @@ def media(self):
6565 js = ['adminsortable2/js/adminsortable2.min.js' ]
6666 return super ().media + widgets .Media (css = css , js = js )
6767
68+ def get_formset_kwargs (self , request , obj , inline , prefix ):
69+ formset_params = super ().get_formset_kwargs (request , obj , inline , prefix )
70+ if hasattr (inline , 'default_order_direction' ) and hasattr (inline , 'default_order_field' ):
71+ formset_params .update (
72+ default_order_direction = inline .default_order_direction ,
73+ default_order_field = inline .default_order_field ,
74+ )
75+ return formset_params
76+
77+ def get_inline_formsets (self , request , formsets , inline_instances , obj = None ):
78+ inline_admin_formsets = super ().get_inline_formsets (request , formsets , inline_instances , obj )
79+ for inline_admin_formset in inline_admin_formsets :
80+ if hasattr (inline_admin_formset .formset , 'default_order_direction' ):
81+ classes = inline_admin_formset .classes .split ()
82+ classes .append ('sortable' )
83+ if inline_admin_formset .formset .default_order_direction == '-' :
84+ classes .append ('reversed' )
85+ inline_admin_formset .classes = ' ' .join (classes )
86+ return inline_admin_formsets
87+
6888
6989class SortableAdminMixin (SortableAdminBase ):
7090 BACK , FORWARD , FIRST , LAST , EXACT = range (5 )
@@ -391,26 +411,6 @@ def get_update_url(self, request):
391411 """
392412 return reverse (f'{ self .admin_site .name } :{ self ._get_update_url_name ()} ' )
393413
394- def get_formset_kwargs (self , request , obj , inline , prefix ):
395- formset_params = super ().get_formset_kwargs (request , obj , inline , prefix )
396- if hasattr (inline , 'default_order_direction' ) and hasattr (inline , 'default_order_field' ):
397- formset_params .update (
398- default_order_direction = inline .default_order_direction ,
399- default_order_field = inline .default_order_field ,
400- )
401- return formset_params
402-
403- def get_inline_formsets (self , request , formsets , inline_instances , obj = None ):
404- inline_admin_formsets = super ().get_inline_formsets (request , formsets , inline_instances , obj )
405- for inline_admin_formset in inline_admin_formsets :
406- if hasattr (inline_admin_formset .formset , 'default_order_direction' ):
407- classes = inline_admin_formset .classes .split ()
408- classes .append ('sortable' )
409- if inline_admin_formset .formset .default_order_direction == '-' :
410- classes .append ('reversed' )
411- inline_admin_formset .classes = ' ' .join (classes )
412- return inline_admin_formsets
413-
414414
415415class PolymorphicSortableAdminMixin (SortableAdminMixin ):
416416 """
@@ -474,10 +474,14 @@ class CustomInlineFormSet(CustomInlineFormSetMixin, BaseInlineFormSet):
474474 pass
475475
476476
477- class SortableInlineAdminMixin ( SortableAdminBase ) :
477+ class SortableInlineAdminMixin :
478478 formset = CustomInlineFormSet
479479
480480 def __init__ (self , parent_model , admin_site ):
481+ assert isinstance (admin_site ._registry [parent_model ], SortableAdminBase ), \
482+ "{} must inherit from SortableAdminBase since {} inherits from SortableInlineAdminMixin." .format (
483+ admin_site ._registry [parent_model ], self .__class__ .__name__
484+ )
481485 self .default_order_direction , self .default_order_field = _get_default_ordering (self .model , self )
482486 super ().__init__ (parent_model , admin_site )
483487
0 commit comments