@@ -251,20 +251,20 @@ class ModelChoiceIterator:
251251 def __bool__ (self ) -> bool : ...
252252 def choice (self , obj : Model ) -> tuple [ModelChoiceIteratorValue , str ]: ...
253253
254- class ModelChoiceField (ChoiceField ):
254+ class ModelChoiceField (ChoiceField , Generic [ _M ] ):
255255 disabled : bool
256256 help_text : _StrOrPromise
257257 required : bool
258258 show_hidden_initial : bool
259259 validators : list [Any ]
260260 iterator : type [ModelChoiceIterator ]
261261 empty_label : _StrOrPromise | None
262- queryset : QuerySet [models . Model ] | None
262+ queryset : QuerySet [_M ] | None
263263 limit_choices_to : _AllLimitChoicesTo | None
264264 to_field_name : str | None
265265 def __init__ (
266266 self ,
267- queryset : None | Manager [models . Model ] | QuerySet [models . Model ] ,
267+ queryset : Manager [_M ] | QuerySet [_M ] | None ,
268268 * ,
269269 empty_label : _StrOrPromise | None = ...,
270270 required : bool = ...,
@@ -278,27 +278,27 @@ class ModelChoiceField(ChoiceField):
278278 ** kwargs : Any ,
279279 ) -> None : ...
280280 def get_limit_choices_to (self ) -> _LimitChoicesTo : ...
281- def label_from_instance (self , obj : Model ) -> str : ...
281+ def label_from_instance (self , obj : _M ) -> str : ...
282282 choices : _PropertyDescriptor [
283283 _FieldChoices | _ChoicesCallable | CallableChoiceIterator ,
284284 _FieldChoices | CallableChoiceIterator | ModelChoiceIterator ,
285285 ]
286286 def prepare_value (self , value : Any ) -> Any : ...
287- def to_python (self , value : Any | None ) -> Model | None : ...
288- def validate (self , value : Model | None ) -> None : ...
287+ def to_python (self , value : Any | None ) -> _M | None : ...
288+ def validate (self , value : _M | None ) -> None : ...
289289 def has_changed (self , initial : Model | int | str | UUID | None , data : int | str | None ) -> bool : ...
290290
291- class ModelMultipleChoiceField (ModelChoiceField ):
291+ class ModelMultipleChoiceField (ModelChoiceField [ _M ] ):
292292 disabled : bool
293293 empty_label : _StrOrPromise | None
294294 help_text : _StrOrPromise
295295 required : bool
296296 show_hidden_initial : bool
297297 widget : _ClassLevelWidgetT
298298 hidden_widget : type [Widget ]
299- def __init__ (self , queryset : None | Manager [Model ] | QuerySet [Model ] , ** kwargs : Any ) -> None : ...
300- def to_python (self , value : Any ) -> list [Model ]: ... # type: ignore[override]
301- def clean (self , value : Any ) -> QuerySet [Model ]: ...
299+ def __init__ (self , queryset : Manager [_M ] | QuerySet [_M ] | None , ** kwargs : Any ) -> None : ...
300+ def to_python (self , value : Any ) -> list [_M ]: ... # type: ignore[override]
301+ def clean (self , value : Any ) -> QuerySet [_M ]: ...
302302 def prepare_value (self , value : Any ) -> Any : ...
303303 def has_changed (self , initial : Collection [Any ] | None , data : Collection [Any ] | None ) -> bool : ... # type: ignore[override]
304304
0 commit comments