File tree Expand file tree Collapse file tree 2 files changed +45
-6
lines changed Expand file tree Collapse file tree 2 files changed +45
-6
lines changed Original file line number Diff line number Diff line change @@ -48,6 +48,31 @@ def get_image_box():
4848 option_name = 'site_logo' ) else ''
4949
5050
51+ class ModelAdmin (admin .ModelAdmin ):
52+ select2_list_filter = ()
53+
54+ class Media :
55+ css = {
56+ "all" : ("admin/components/select2/dist/css/select2.min.css" ,)
57+ }
58+ js = (
59+ "admin/components/select2/dist/js/select2.min.js" ,
60+ )
61+
62+ def changelist_view (self , request , extra_context = None ):
63+ view = super ().changelist_view (request , extra_context )
64+ cl = view .context_data .get ('cl' )
65+ filter_specs = cl .filter_specs
66+
67+ for index , filter_spec in enumerate (filter_specs ):
68+ if filter_spec .field_path in self .select2_list_filter :
69+ # flag to use select2
70+ filter_spec .display_select2 = True
71+ cl .filter_specs [index ] = filter_spec
72+ view .context_data ['cl' ] = cl
73+ return view
74+
75+
5176class GeneralOptionForm (forms .Form ):
5277 site_title = forms .CharField (label = _ ('Site Title' ),
5378 widget = widgets .AdminTextInputWidget (),
Original file line number Diff line number Diff line change 11{% load i18n %}
22
33< div class ="form-group " style ="margin-bottom: 5px; ">
4- < select class ="form-control select2 select2-hidden-accessible search-filter " style ="width: 100%; " tabindex ="-1 " aria-hidden ="true " data-name =" {{ field_name }} ">
4+ < select id =" id_filter_{{ field_name }} " class ="form-control search-filter " style ="width: 100%; " tabindex ="-1 " aria-hidden ="true ">
55 < option value =""> {{ title }}</ option >
66 < option value =""> ---------</ option >
77 {% for choice in choices %}
8- {% if choice.name %}
9- < option data-name ="{{ choice.name }} " value ="{{ choice.value }} " {% if choice.selected %} selected {% endif %} >
10- {{ choice.display }}
11- </ option >
12- {% endif %}
8+ {% if choice.name %}
9+ < option data-name ="{{ choice.name }} " value ="{{ choice.value }} " {% if choice.selected %} selected {% endif %} >
10+ {{ choice.display }}
11+ </ option >
12+ {% endif %}
1313 {% endfor %}
1414 </ select >
15+ {% if spec.display_select2 %}
16+ < script >
17+ django . jQuery ( '#id_filter_{{ field_name }}' ) . select2 ( {
18+ width : django . jQuery ( '#id_filter_{{ field_name }}' ) . width ( ) + 26
19+ } )
20+ django . jQuery ( '#id_filter_{{ field_name }}' ) . on ( 'select2:select' , function ( e ) {
21+ if ( e . params . data . id !== '' ) {
22+ django . jQuery ( '#id_filter_{{ field_name }}' ) . attr ( 'name' , e . params . data . element . dataset . name )
23+ } else {
24+ django . jQuery ( '#id_filter_{{ field_name }}' ) . removeAttr ( 'name' )
25+ }
26+ } ) ;
27+ </ script >
28+ {% endif %}
1529</ div >
You can’t perform that action at this time.
0 commit comments