@@ -65,8 +65,19 @@ class ForeignKeyWidget(Widget, Generic[_ModelT]):
6565 self , model : _ModelT , field : str = "pk" , use_natural_foreign_keys : bool = False , key_is_id : bool = False , ** kwargs : Any
6666 ) -> None : ...
6767 def get_queryset (self , value : Any , row : Mapping [str , Any ], * args : Any , ** kwargs : Any ) -> QuerySet [_ModelT ]: ...
68+ def get_instance_by_natural_key (self , value : str | bytes | bytearray ) -> _ModelT : ...
69+ def get_instance_by_lookup_fields (self , value : Any , row : Mapping [str , Any ], ** kwargs : Any ) -> _ModelT : ...
6870 def get_lookup_kwargs (self , value : Any , row : Mapping [str , Any ] | None = None , ** kwargs : Any ) -> dict [str , Any ]: ...
6971
72+ class _CachedQuerySetWrapper (Generic [_ModelT ]):
73+ queryset : QuerySet [_ModelT ]
74+ model : type [_ModelT ]
75+ def __init__ (self , queryset : QuerySet [_ModelT ]) -> None : ...
76+ def get (self , ** lookup_fields : Any ) -> _ModelT : ... # instance can have different fields
77+
78+ class CachedForeignKeyWidget (ForeignKeyWidget [_ModelT ]):
79+ def get_instance_by_lookup_fields (self , value : Any , row : Mapping [str , Any ], ** kwargs : Any ) -> _ModelT : ...
80+
7081class ManyToManyWidget (Widget , Generic [_ModelT ]):
7182 model : _ModelT
7283 separator : str
0 commit comments