@@ -82,7 +82,8 @@ _ListFilterT: TypeAlias = (
82
82
# Generic type specifically for models, for use in BaseModelAdmin and subclasses
83
83
# https://github.com/typeddjango/django-stubs/issues/482
84
84
_ModelT = TypeVar ("_ModelT" , bound = Model )
85
- _DisplayT : TypeAlias = _ListOrTuple [str | Callable [[_ModelT ], str | bool ]]
85
+ _DisplayT : TypeAlias = str | Callable [[_ModelT ], str | bool ]
86
+ _ListDisplayT : TypeAlias = _ListOrTuple [_DisplayT [_ModelT ]]
86
87
87
88
# Options `form`, `list_display`, `list_display_links` and `actions` are not marked as `ClassVar` due to the
88
89
# limitations of the current type system: `ClassVar` cannot contain type variables.
@@ -130,7 +131,7 @@ class BaseModelAdmin(Generic[_ModelT]):
130
131
def get_readonly_fields (self , request : HttpRequest , obj : _ModelT | None = ...) -> _ListOrTuple [str ]: ...
131
132
def get_prepopulated_fields (self , request : HttpRequest , obj : _ModelT | None = ...) -> dict [str , Sequence [str ]]: ...
132
133
def get_queryset (self , request : HttpRequest ) -> QuerySet [_ModelT ]: ...
133
- def get_sortable_by (self , request : HttpRequest ) -> _DisplayT [_ModelT ]: ...
134
+ def get_sortable_by (self , request : HttpRequest ) -> _ListDisplayT [_ModelT ]: ...
134
135
@overload
135
136
@deprecated ("None value for the request parameter will be removed in Django 6.0." )
136
137
def lookup_allowed (self , lookup : str , value : str , request : None = None ) -> bool : ...
@@ -150,8 +151,8 @@ _ModelAdmin = TypeVar("_ModelAdmin", bound=ModelAdmin[Any])
150
151
_ActionCallable : TypeAlias = Callable [[_ModelAdmin , HttpRequest , QuerySet [_ModelT ]], HttpResponseBase | None ]
151
152
152
153
class ModelAdmin (BaseModelAdmin [_ModelT ]):
153
- list_display : _DisplayT [_ModelT ]
154
- list_display_links : _DisplayT [_ModelT ] | None
154
+ list_display : _ListDisplayT [_ModelT ]
155
+ list_display_links : _ListDisplayT [_ModelT ] | None
155
156
list_filter : ClassVar [_ListOrTuple [_ListFilterT ]]
156
157
list_select_related : ClassVar [bool | _ListOrTuple [str ]]
157
158
list_per_page : ClassVar [int ]
@@ -220,8 +221,10 @@ class ModelAdmin(BaseModelAdmin[_ModelT]):
220
221
self , request : HttpRequest , default_choices : list [tuple [str , str ]] = ...
221
222
) -> list [tuple [str , str ]]: ...
222
223
def get_action (self , action : Callable | str ) -> tuple [Callable [..., str ], str , str ] | None : ...
223
- def get_list_display (self , request : HttpRequest ) -> _DisplayT [_ModelT ]: ...
224
- def get_list_display_links (self , request : HttpRequest , list_display : _DisplayT [_ModelT ]) -> _DisplayT [_ModelT ]: ...
224
+ def get_list_display (self , request : HttpRequest ) -> _ListDisplayT [_ModelT ]: ...
225
+ def get_list_display_links (
226
+ self , request : HttpRequest , list_display : _ListDisplayT [_ModelT ]
227
+ ) -> _ListDisplayT [_ModelT ]: ...
225
228
def get_list_filter (self , request : HttpRequest ) -> _ListOrTuple [_ListFilterT ]: ...
226
229
def get_list_select_related (self , request : HttpRequest ) -> bool | _ListOrTuple [str ]: ...
227
230
def get_search_fields (self , request : HttpRequest ) -> _ListOrTuple [str ]: ...
0 commit comments