@@ -74,6 +74,7 @@ _ListFilterT: TypeAlias = (
7474# Generic type specifically for models, for use in BaseModelAdmin and subclasses
7575# https://github.com/typeddjango/django-stubs/issues/482
7676_ModelT = TypeVar ("_ModelT" , bound = Model )
77+ _DisplayT : TypeAlias = _ListOrTuple [str | Callable [[_ModelT ], str | bool ]]
7778
7879class BaseModelAdmin (Generic [_ModelT ]):
7980 autocomplete_fields : _ListOrTuple [str ]
@@ -87,7 +88,7 @@ class BaseModelAdmin(Generic[_ModelT]):
8788 radio_fields : Mapping [str , _Direction ]
8889 prepopulated_fields : dict [str , Sequence [str ]]
8990 formfield_overrides : Mapping [type [Field ], Mapping [str , Any ]]
90- readonly_fields : _ListOrTuple [str ] | None
91+ readonly_fields : _ListOrTuple [str ]
9192 ordering : _ListOrTuple [str ] | None
9293 sortable_by : _ListOrTuple [str ] | None
9394 view_on_site : bool | Callable [[_ModelT ], str ]
@@ -107,18 +108,18 @@ class BaseModelAdmin(Generic[_ModelT]):
107108 def formfield_for_manytomany (
108109 self , db_field : ManyToManyField , request : HttpRequest , ** kwargs : Any
109110 ) -> ModelMultipleChoiceField | None : ...
110- def get_autocomplete_fields (self , request : HttpRequest ) -> Sequence [str ]: ...
111+ def get_autocomplete_fields (self , request : HttpRequest ) -> _ListOrTuple [str ]: ...
111112 def get_view_on_site_url (self , obj : _ModelT | None = ...) -> str | None : ...
112113 def get_empty_value_display (self ) -> SafeString : ...
113- def get_exclude (self , request : HttpRequest , obj : _ModelT | None = ...) -> Sequence [str ] | None : ...
114+ def get_exclude (self , request : HttpRequest , obj : _ModelT | None = ...) -> _ListOrTuple [str ] | None : ...
114115 def get_fields (self , request : HttpRequest , obj : _ModelT | None = ...) -> _FieldGroups : ...
115116 def get_fieldsets (self , request : HttpRequest , obj : _ModelT | None = ...) -> _FieldsetSpec : ...
116117 def get_inlines (self , request : HttpRequest , obj : _ModelT | None ) -> list [type [InlineModelAdmin ]]: ...
117- def get_ordering (self , request : HttpRequest ) -> Sequence [str ]: ...
118- def get_readonly_fields (self , request : HttpRequest , obj : _ModelT | None = ...) -> Sequence [str ]: ...
118+ def get_ordering (self , request : HttpRequest ) -> _ListOrTuple [str ]: ...
119+ def get_readonly_fields (self , request : HttpRequest , obj : _ModelT | None = ...) -> _ListOrTuple [str ]: ...
119120 def get_prepopulated_fields (self , request : HttpRequest , obj : _ModelT | None = ...) -> dict [str , Sequence [str ]]: ...
120121 def get_queryset (self , request : HttpRequest ) -> QuerySet [_ModelT ]: ...
121- def get_sortable_by (self , request : HttpRequest ) -> Sequence [ str ] : ...
122+ def get_sortable_by (self , request : HttpRequest ) -> _DisplayT : ...
122123 def lookup_allowed (self , lookup : str , value : str ) -> bool : ...
123124 def to_field_allowed (self , request : HttpRequest , to_field : str ) -> bool : ...
124125 def has_add_permission (self , request : HttpRequest ) -> bool : ...
@@ -128,7 +129,6 @@ class BaseModelAdmin(Generic[_ModelT]):
128129 def has_view_or_change_permission (self , request : HttpRequest , obj : _ModelT | None = ...) -> bool : ...
129130 def has_module_permission (self , request : HttpRequest ) -> bool : ...
130131
131- _DisplayT : TypeAlias = _ListOrTuple [str | Callable [[_ModelT ], str | bool ]]
132132_ModelAdmin = TypeVar ("_ModelAdmin" , bound = ModelAdmin )
133133_ActionCallable : TypeAlias = Callable [[_ModelAdmin , HttpRequest , QuerySet [_ModelT ]], HttpResponseBase | None ]
134134
@@ -202,9 +202,9 @@ class ModelAdmin(BaseModelAdmin[_ModelT]):
202202 def get_action (self , action : Callable | str ) -> tuple [Callable [..., str ], str , str ] | None : ...
203203 def get_list_display (self , request : HttpRequest ) -> _DisplayT : ...
204204 def get_list_display_links (self , request : HttpRequest , list_display : _DisplayT ) -> _DisplayT : ...
205- def get_list_filter (self , request : HttpRequest ) -> Sequence [_ListFilterT ]: ...
206- def get_list_select_related (self , request : HttpRequest ) -> bool | Sequence [str ]: ...
207- def get_search_fields (self , request : HttpRequest ) -> Sequence [str ]: ...
205+ def get_list_filter (self , request : HttpRequest ) -> _ListOrTuple [_ListFilterT ]: ...
206+ def get_list_select_related (self , request : HttpRequest ) -> bool | _ListOrTuple [str ]: ...
207+ def get_search_fields (self , request : HttpRequest ) -> _ListOrTuple [str ]: ...
208208 def get_search_results (
209209 self , request : HttpRequest , queryset : QuerySet , search_term : str
210210 ) -> tuple [QuerySet [_ModelT ], bool ]: ...
0 commit comments