15
15
16
16
class FilterSpec (object ):
17
17
filter_specs = []
18
- def __init__ (self , f , request , params , model ):
18
+ def __init__ (self , f , request , params , model , model_admin ):
19
19
self .field = f
20
20
self .params = params
21
21
22
22
def register (cls , test , factory ):
23
23
cls .filter_specs .append ((test , factory ))
24
24
register = classmethod (register )
25
25
26
- def create (cls , f , request , params , model ):
26
+ def create (cls , f , request , params , model , model_admin ):
27
27
for test , factory in cls .filter_specs :
28
28
if test (f ):
29
- return factory (f , request , params , model )
29
+ return factory (f , request , params , model , model_admin )
30
30
create = classmethod (create )
31
31
32
32
def has_output (self ):
@@ -52,8 +52,8 @@ def output(self, cl):
52
52
return mark_safe ("" .join (t ))
53
53
54
54
class RelatedFilterSpec (FilterSpec ):
55
- def __init__ (self , f , request , params , model ):
56
- super (RelatedFilterSpec , self ).__init__ (f , request , params , model )
55
+ def __init__ (self , f , request , params , model , model_admin ):
56
+ super (RelatedFilterSpec , self ).__init__ (f , request , params , model , model_admin )
57
57
if isinstance (f , models .ManyToManyField ):
58
58
self .lookup_title = f .rel .to ._meta .verbose_name
59
59
else :
@@ -81,8 +81,8 @@ def choices(self, cl):
81
81
FilterSpec .register (lambda f : bool (f .rel ), RelatedFilterSpec )
82
82
83
83
class ChoicesFilterSpec (FilterSpec ):
84
- def __init__ (self , f , request , params , model ):
85
- super (ChoicesFilterSpec , self ).__init__ (f , request , params , model )
84
+ def __init__ (self , f , request , params , model , model_admin ):
85
+ super (ChoicesFilterSpec , self ).__init__ (f , request , params , model , model_admin )
86
86
self .lookup_kwarg = '%s__exact' % f .name
87
87
self .lookup_val = request .GET .get (self .lookup_kwarg , None )
88
88
@@ -98,8 +98,8 @@ def choices(self, cl):
98
98
FilterSpec .register (lambda f : bool (f .choices ), ChoicesFilterSpec )
99
99
100
100
class DateFieldFilterSpec (FilterSpec ):
101
- def __init__ (self , f , request , params , model ):
102
- super (DateFieldFilterSpec , self ).__init__ (f , request , params , model )
101
+ def __init__ (self , f , request , params , model , model_admin ):
102
+ super (DateFieldFilterSpec , self ).__init__ (f , request , params , model , model_admin )
103
103
104
104
self .field_generic = '%s__' % self .field .name
105
105
@@ -133,8 +133,8 @@ def choices(self, cl):
133
133
FilterSpec .register (lambda f : isinstance (f , models .DateField ), DateFieldFilterSpec )
134
134
135
135
class BooleanFieldFilterSpec (FilterSpec ):
136
- def __init__ (self , f , request , params , model ):
137
- super (BooleanFieldFilterSpec , self ).__init__ (f , request , params , model )
136
+ def __init__ (self , f , request , params , model , model_admin ):
137
+ super (BooleanFieldFilterSpec , self ).__init__ (f , request , params , model , model_admin )
138
138
self .lookup_kwarg = '%s__exact' % f .name
139
139
self .lookup_kwarg2 = '%s__isnull' % f .name
140
140
self .lookup_val = request .GET .get (self .lookup_kwarg , None )
@@ -159,10 +159,10 @@ def choices(self, cl):
159
159
# if a field is eligible to use the BooleanFieldFilterSpec, that'd be much
160
160
# more appropriate, and the AllValuesFilterSpec won't get used for it.
161
161
class AllValuesFilterSpec (FilterSpec ):
162
- def __init__ (self , f , request , params , model ):
163
- super (AllValuesFilterSpec , self ).__init__ (f , request , params , model )
162
+ def __init__ (self , f , request , params , model , model_admin ):
163
+ super (AllValuesFilterSpec , self ).__init__ (f , request , params , model , model_admin )
164
164
self .lookup_val = request .GET .get (f .name , None )
165
- self .lookup_choices = model . _meta . admin . manager .distinct ().order_by (f .name ).values (f .name )
165
+ self .lookup_choices = model_admin . queryset ( request ) .distinct ().order_by (f .name ).values (f .name )
166
166
167
167
def title (self ):
168
168
return self .field .verbose_name
0 commit comments