QuerySet.as_manager() support

This commit is contained in:
Maxim Kurnikov
2020-01-04 16:52:13 +03:00
parent 13e40ab4a1
commit 90617bc76a
3 changed files with 247 additions and 26 deletions

View File

@@ -0,0 +1,42 @@
- case: anonymous_queryset_from_as_manager_inside_model
main: |
from myapp.models import MyModel
reveal_type(MyModel.objects) # N: Revealed type is 'myapp.models.MyQuerySet_AsManager_MyModel'
reveal_type(MyModel.objects.get()) # N: Revealed type is 'myapp.models.MyModel*'
reveal_type(MyModel.objects.queryset_method) # N: Revealed type is 'def () -> builtins.int'
reveal_type(MyModel.objects.queryset_method()) # N: Revealed type is 'builtins.int'
installed_apps:
- myapp
files:
- path: myapp/__init__.py
- path: myapp/models.py
content: |
from django.db import models
class MyQuerySet(models.QuerySet):
def queryset_method(self) -> int:
pass
class MyModel(models.Model):
objects = MyQuerySet.as_manager()
- case: as_manager_outside_model_parametrized_with_any
main: |
from myapp.models import NotModel, outside_objects
reveal_type(NotModel.objects) # N: Revealed type is 'myapp.models.MyQuerySet_AsManager_Any'
reveal_type(NotModel.objects.get()) # N: Revealed type is 'Any'
reveal_type(outside_objects) # N: Revealed type is 'myapp.models.MyQuerySet_AsManager_Any'
reveal_type(outside_objects.get()) # N: Revealed type is 'Any'
installed_apps:
- myapp
files:
- path: myapp/__init__.py
- path: myapp/models.py
content: |
from django.db import models
class MyQuerySet(models.QuerySet):
def queryset_method(self) -> int:
pass
outside_objects = MyQuerySet.as_manager()
class NotModel:
objects = MyQuerySet.as_manager()