@@ -74,6 +74,7 @@ _ListFilterT: TypeAlias = (
74
74
# Generic type specifically for models, for use in BaseModelAdmin and subclasses
75
75
# https://github.com/typeddjango/django-stubs/issues/482
76
76
_ModelT = TypeVar ("_ModelT" , bound = Model )
77
+ _DisplayT : TypeAlias = _ListOrTuple [str | Callable [[_ModelT ], str | bool ]]
77
78
78
79
class BaseModelAdmin (Generic [_ModelT ]):
79
80
autocomplete_fields : _ListOrTuple [str ]
@@ -87,7 +88,7 @@ class BaseModelAdmin(Generic[_ModelT]):
87
88
radio_fields : Mapping [str , _Direction ]
88
89
prepopulated_fields : dict [str , Sequence [str ]]
89
90
formfield_overrides : Mapping [type [Field ], Mapping [str , Any ]]
90
- readonly_fields : _ListOrTuple [str ] | None
91
+ readonly_fields : _ListOrTuple [str ]
91
92
ordering : _ListOrTuple [str ] | None
92
93
sortable_by : _ListOrTuple [str ] | None
93
94
view_on_site : bool | Callable [[_ModelT ], str ]
@@ -107,18 +108,18 @@ class BaseModelAdmin(Generic[_ModelT]):
107
108
def formfield_for_manytomany (
108
109
self , db_field : ManyToManyField , request : HttpRequest , ** kwargs : Any
109
110
) -> ModelMultipleChoiceField | None : ...
110
- def get_autocomplete_fields (self , request : HttpRequest ) -> Sequence [str ]: ...
111
+ def get_autocomplete_fields (self , request : HttpRequest ) -> _ListOrTuple [str ]: ...
111
112
def get_view_on_site_url (self , obj : _ModelT | None = ...) -> str | None : ...
112
113
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 : ...
114
115
def get_fields (self , request : HttpRequest , obj : _ModelT | None = ...) -> _FieldGroups : ...
115
116
def get_fieldsets (self , request : HttpRequest , obj : _ModelT | None = ...) -> _FieldsetSpec : ...
116
117
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 ]: ...
119
120
def get_prepopulated_fields (self , request : HttpRequest , obj : _ModelT | None = ...) -> dict [str , Sequence [str ]]: ...
120
121
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 : ...
122
123
def lookup_allowed (self , lookup : str , value : str ) -> bool : ...
123
124
def to_field_allowed (self , request : HttpRequest , to_field : str ) -> bool : ...
124
125
def has_add_permission (self , request : HttpRequest ) -> bool : ...
@@ -128,7 +129,6 @@ class BaseModelAdmin(Generic[_ModelT]):
128
129
def has_view_or_change_permission (self , request : HttpRequest , obj : _ModelT | None = ...) -> bool : ...
129
130
def has_module_permission (self , request : HttpRequest ) -> bool : ...
130
131
131
- _DisplayT : TypeAlias = _ListOrTuple [str | Callable [[_ModelT ], str | bool ]]
132
132
_ModelAdmin = TypeVar ("_ModelAdmin" , bound = ModelAdmin )
133
133
_ActionCallable : TypeAlias = Callable [[_ModelAdmin , HttpRequest , QuerySet [_ModelT ]], HttpResponseBase | None ]
134
134
@@ -202,9 +202,9 @@ class ModelAdmin(BaseModelAdmin[_ModelT]):
202
202
def get_action (self , action : Callable | str ) -> tuple [Callable [..., str ], str , str ] | None : ...
203
203
def get_list_display (self , request : HttpRequest ) -> _DisplayT : ...
204
204
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 ]: ...
208
208
def get_search_results (
209
209
self , request : HttpRequest , queryset : QuerySet , search_term : str
210
210
) -> tuple [QuerySet [_ModelT ], bool ]: ...
0 commit comments