remove catch-all __getattr__ for Manager, fix some issues with manager methods (#227)

This commit is contained in:
Maksim Kurnikov
2019-11-12 20:36:07 +03:00
committed by GitHub
parent e9a90ebff0
commit 8d986a0f43
9 changed files with 72 additions and 28 deletions

View File

@@ -28,4 +28,20 @@
from django.db import models
class Blog(models.Model):
created_at = models.DateTimeField()
created_at = models.DateTimeField()
- case: queryset_missing_method
main: |
from myapp.models import User
reveal_type(User.objects) # N: Revealed type is 'django.db.models.manager.Manager[myapp.models.User]'
User.objects.not_existing_method() # E: "Manager[User]" has no attribute "not_existing_method"
installed_apps:
- myapp
files:
- path: myapp/__init__.py
- path: myapp/models.py
content: |
from django.db import models
class User(models.Model):
pass

View File

@@ -309,6 +309,7 @@
from myapp.models import User
reveal_type(User.objects.get()) # N: Revealed type is 'myapp.models.User*'
reveal_type(User.objects.select_related()) # N: Revealed type is 'myapp.models.User_MyManager[myapp.models.User]'
reveal_type(User.objects.get_instance()) # N: Revealed type is 'builtins.int'
installed_apps:
- myapp
files:
@@ -317,6 +318,7 @@
content: |
from django.db import models
class MyManager(models.Manager):
pass
def get_instance(self) -> int:
pass
class User(models.Model):
objects = MyManager()