mirror of
https://github.com/davidhalter/django-stubs.git
synced 2026-01-09 13:02:22 +08:00
Set custom queryset methods as manager attrs instead of method copies (#820)
Instead of copying methods over from a QuerySet passed to a basemanager when invoking '<BaseManager>.from_queryset', any QuerySet methods are declared as attributes on the manager. This allows us to properly lookup any QuerySet method types via a 'get_attribute_hook' and will thus remove disorienting phantom errors occuring from mypy trying to resolve types only existing in the module where the _original_ (and real) queryset method was declared.
This commit is contained in:
@@ -684,6 +684,7 @@
|
||||
reveal_type(User().orders) # N: Revealed type is "myapp.models.User_Order_RelatedManager1"
|
||||
reveal_type(User().orders.get()) # N: Revealed type is "myapp.models.Order*"
|
||||
reveal_type(User().orders.manager_method()) # N: Revealed type is "builtins.int"
|
||||
reveal_type(Product.objects.queryset_method()) # N: Revealed type is "builtins.int"
|
||||
reveal_type(Order().products) # N: Revealed type is "myapp.models.Order_Product_RelatedManager1"
|
||||
reveal_type(Order().products.get()) # N: Revealed type is "myapp.models.Product*"
|
||||
reveal_type(Order().products.queryset_method()) # N: Revealed type is "builtins.int"
|
||||
|
||||
Reference in New Issue
Block a user