11from collections .abc import Callable , Iterable , Iterator
2- from typing import Any
2+ from datetime import date , datetime
3+ from typing import Any , ClassVar
34
45from django .contrib .admin .options import ModelAdmin
6+ from django .contrib .admin .views .main import ChangeList
7+ from django .db .models .aggregates import Count
58from django .db .models .base import Model
69from django .db .models .fields import Field
710from django .db .models .fields .related import RelatedField
811from django .db .models .query import QuerySet
12+ from django .db .models .query_utils import Q
913from django .http .request import HttpRequest
14+ from django .utils .datastructures import _ListOrTuple
1015from django .utils .functional import _StrOrPromise
16+ from django .utils .safestring import SafeString
17+ from typing_extensions import TypedDict
18+
19+ class _ListFilterChoices (TypedDict ):
20+ selected : bool
21+ query_string : str
22+ display : _StrOrPromise
1123
1224class ListFilter :
1325 title : _StrOrPromise | None
1426 template : str
15- used_parameters : Any
27+ request : HttpRequest
28+ used_parameters : dict [str , bool | datetime | str ]
1629 def __init__ (
1730 self , request : HttpRequest , params : dict [str , str ], model : type [Model ], model_admin : ModelAdmin
1831 ) -> None : ...
1932 def has_output (self ) -> bool : ...
20- def choices (self , changelist : Any ) -> Iterator [dict [ str , Any ] ]: ...
33+ def choices (self , changelist : ChangeList ) -> Iterator [_ListFilterChoices ]: ...
2134 def queryset (self , request : HttpRequest , queryset : QuerySet ) -> QuerySet | None : ...
2235 def expected_parameters (self ) -> list [str | None ]: ...
2336
24- class SimpleListFilter (ListFilter ):
37+ class FacetsMixin :
38+ def get_facet_counts (self , pk_attname : str , filtered_qs : QuerySet [Model ]) -> dict [str , Count ]: ...
39+ def get_facet_queryset (self , changelist : ChangeList ) -> dict [str , int ]: ...
40+
41+ class SimpleListFilter (FacetsMixin , ListFilter ):
2542 parameter_name : str | None
26- lookup_choices : Any
43+ lookup_choices : list [ tuple [ str , _StrOrPromise ]]
2744 def value (self ) -> str | None : ...
28- def lookups (self , request : HttpRequest , model_admin : ModelAdmin ) -> Iterable [tuple [Any , str ]] | None : ...
29- def choices (self , changelist : Any ) -> Iterator [dict [str , Any ]]: ...
45+ def lookups (self , request : HttpRequest , model_admin : ModelAdmin ) -> Iterable [tuple [str , _StrOrPromise ]] | None : ...
3046
31- class FieldListFilter (ListFilter ):
47+ class FieldListFilter (FacetsMixin , ListFilter ):
48+ list_separator : ClassVar [str ]
3249 field : Field
3350 field_path : str
34- title : str
51+ title : _StrOrPromise
3552 def __init__ (
3653 self ,
3754 field : Field ,
@@ -42,7 +59,9 @@ class FieldListFilter(ListFilter):
4259 field_path : str ,
4360 ) -> None : ...
4461 @classmethod
45- def register (cls , test : Callable , list_filter_class : type [FieldListFilter ], take_priority : bool = ...) -> None : ...
62+ def register (
63+ cls , test : Callable [[Field ], Any ], list_filter_class : type [FieldListFilter ], take_priority : bool = ...
64+ ) -> None : ...
4665 @classmethod
4766 def create (
4867 cls ,
@@ -55,67 +74,53 @@ class FieldListFilter(ListFilter):
5574 ) -> FieldListFilter : ...
5675
5776class RelatedFieldListFilter (FieldListFilter ):
58- used_parameters : dict [Any , Any ]
5977 lookup_kwarg : str
6078 lookup_kwarg_isnull : str
61- lookup_val : Any
62- lookup_val_isnull : Any
63- lookup_choices : Any
64- lookup_title : str
65- title : str
66- empty_value_display : Any
79+ lookup_val : str | None
80+ lookup_val_isnull : str | None
81+ lookup_choices : list [tuple [str , _StrOrPromise ]]
82+ lookup_title : _StrOrPromise
83+ empty_value_display : SafeString
6784 @property
6885 def include_empty_choice (self ) -> bool : ...
86+ def field_admin_ordering (
87+ self , field : RelatedField , request : HttpRequest , model_admin : ModelAdmin
88+ ) -> _ListOrTuple [str ]: ...
6989 def field_choices (
7090 self , field : RelatedField , request : HttpRequest , model_admin : ModelAdmin
71- ) -> list [tuple [str , str ]]: ...
72- def choices (self , changelist : Any ) -> Iterator [dict [str , Any ]]: ...
91+ ) -> list [tuple [str , _StrOrPromise ]]: ...
7392
7493class BooleanFieldListFilter (FieldListFilter ):
7594 lookup_kwarg : str
7695 lookup_kwarg2 : str
77- lookup_val : Any
78- lookup_val2 : Any
79- def choices (self , changelist : Any ) -> Iterator [dict [str , Any ]]: ...
96+ lookup_val : str | None
97+ lookup_val2 : str | None
8098
8199class ChoicesFieldListFilter (FieldListFilter ):
82- title : str
83- used_parameters : dict [Any , Any ]
84100 lookup_kwarg : str
85101 lookup_kwarg_isnull : str
86- lookup_val : Any
87- lookup_val_isnull : Any
88- def choices (self , changelist : Any ) -> Iterator [dict [str , Any ]]: ...
102+ lookup_val : str | None
103+ lookup_val_isnull : str | None
89104
90105class DateFieldListFilter (FieldListFilter ):
91- field_generic : Any
92- date_params : Any
93- lookup_kwarg_since : Any
94- lookup_kwarg_until : Any
95- links : Any
96- lookup_kwarg_isnull : Any
97- def choices (self , changelist : Any ) -> Iterator [dict [str , Any ]]: ...
106+ field_generic : str
107+ date_params : dict [str , str ]
108+ lookup_kwarg_since : str
109+ lookup_kwarg_until : str
110+ links : tuple [tuple [_StrOrPromise , dict [str , bool | date | datetime ]], ...]
111+ lookup_kwarg_isnull : str
98112
99113class AllValuesFieldListFilter (FieldListFilter ):
100- title : str
101- used_parameters : dict [Any , Any ]
102114 lookup_kwarg : str
103115 lookup_kwarg_isnull : str
104- lookup_val : Any
105- lookup_val_isnull : Any
106- empty_value_display : str
116+ lookup_val : str | None
117+ lookup_val_isnull : str | None
118+ empty_value_display : SafeString
107119 lookup_choices : QuerySet
108- def choices (self , changelist : Any ) -> Iterator [dict [str , Any ]]: ...
109120
110- class RelatedOnlyFieldListFilter (RelatedFieldListFilter ):
111- lookup_kwarg : str
112- lookup_kwarg_isnull : str
113- lookup_val : Any
114- lookup_val_isnull : Any
115- title : str
116- used_parameters : dict [Any , Any ]
121+ class RelatedOnlyFieldListFilter (RelatedFieldListFilter ): ...
117122
118123class EmptyFieldListFilter (FieldListFilter ):
119124 lookup_kwarg : str
120- lookup_val : Any
121- def choices (self , changelist : Any ) -> Iterator [ dict [ str , Any ]] : ...
125+ lookup_val : str | None
126+ def get_lookup_condition (self ) -> Q : ...
0 commit comments