2
2
from django.db import models
3
3
class User(models.Model):
4
4
pass
5
- reveal_type(User.objects) # E : Revealed type is 'django.db.models.manager.Manager[main.User]'
6
- reveal_type(User.objects.get()) # E : Revealed type is 'main.User*'
5
+ reveal_type(User.objects) # N : Revealed type is 'django.db.models.manager.Manager[main.User]'
6
+ reveal_type(User.objects.get()) # N : Revealed type is 'main.User*'
7
7
8
8
[CASE every_model_has_its_own_objects_queryset]
9
9
from django.db import models
10
10
class Parent(models.Model):
11
11
pass
12
12
class Child(Parent):
13
13
pass
14
- reveal_type(Parent.objects) # E : Revealed type is 'django.db.models.manager.Manager[main.Parent]'
15
- reveal_type(Child.objects) # E : Revealed type is 'django.db.models.manager.Manager[main.Child]'
14
+ reveal_type(Parent.objects) # N : Revealed type is 'django.db.models.manager.Manager[main.Parent]'
15
+ reveal_type(Child.objects) # N : Revealed type is 'django.db.models.manager.Manager[main.Child]'
16
16
[out]
17
17
18
18
[CASE if_manager_is_defined_on_model_do_not_add_objects]
19
19
from django.db import models
20
20
21
21
class MyModel(models.Model):
22
22
authors = models.Manager[MyModel]()
23
- reveal_type(MyModel.authors) # E : Revealed type is 'django.db.models.manager.Manager[main.MyModel]'
23
+ reveal_type(MyModel.authors) # N : Revealed type is 'django.db.models.manager.Manager[main.MyModel]'
24
24
MyModel.objects # E: "Type[MyModel]" has no attribute "objects"
25
25
[out]
26
26
@@ -32,15 +32,15 @@ _T = TypeVar('_T', bound=models.Model)
32
32
class Base(Generic[_T]):
33
33
def __init__(self, model_cls: Type[_T]):
34
34
self.model_cls = model_cls
35
- reveal_type(self.model_cls._default_manager) # E : Revealed type is 'django.db.models.manager.Manager[django.db.models.base.Model]'
35
+ reveal_type(self.model_cls._default_manager) # N : Revealed type is 'django.db.models.manager.Manager[django.db.models.base.Model]'
36
36
class MyModel(models.Model):
37
37
pass
38
38
base_instance = Base(MyModel)
39
- reveal_type(base_instance.model_cls._default_manager) # E : Revealed type is 'django.db.models.manager.Manager[main.MyModel]'
39
+ reveal_type(base_instance.model_cls._default_manager) # N : Revealed type is 'django.db.models.manager.Manager[main.MyModel]'
40
40
41
41
class Child(Base[MyModel]):
42
42
def method(self) -> None:
43
- reveal_type(self.model_cls._default_manager) # E : Revealed type is 'django.db.models.manager.Manager[main.MyModel]'
43
+ reveal_type(self.model_cls._default_manager) # N : Revealed type is 'django.db.models.manager.Manager[main.MyModel]'
44
44
45
45
[CASE if_custom_manager_defined_it_is_set_to_default_manager]
46
46
from typing import TypeVar
@@ -50,7 +50,7 @@ class CustomManager(models.Manager[_T]):
50
50
pass
51
51
class MyModel(models.Model):
52
52
manager = CustomManager[MyModel]()
53
- reveal_type(MyModel._default_manager) # E : Revealed type is 'main.CustomManager[main.MyModel]'
53
+ reveal_type(MyModel._default_manager) # N : Revealed type is 'main.CustomManager[main.MyModel]'
54
54
55
55
[CASE if_default_manager_name_is_passed_set_default_manager_to_it]
56
56
from typing import TypeVar
@@ -66,7 +66,7 @@ class MyModel(models.Model):
66
66
default_manager_name = 'm2'
67
67
m1: Manager1[MyModel]
68
68
m2: Manager2[MyModel]
69
- reveal_type(MyModel._default_manager) # E : Revealed type is 'main.Manager2[main.MyModel]'
69
+ reveal_type(MyModel._default_manager) # N : Revealed type is 'main.Manager2[main.MyModel]'
70
70
71
71
[CASE test_leave_as_is_if_objects_is_set_and_fill_typevars_with_outer_class]
72
72
from django.db import models
@@ -78,18 +78,18 @@ class UserManager(models.Manager[MyUser]):
78
78
class MyUser(models.Model):
79
79
objects = UserManager()
80
80
81
- reveal_type(MyUser.objects) # E : Revealed type is 'main.UserManager[main.MyUser]'
82
- reveal_type(MyUser.objects.get()) # E : Revealed type is 'main.MyUser*'
83
- reveal_type(MyUser.objects.get_or_404()) # E : Revealed type is 'main.MyUser'
81
+ reveal_type(MyUser.objects) # N : Revealed type is 'main.UserManager[main.MyUser]'
82
+ reveal_type(MyUser.objects.get()) # N : Revealed type is 'main.MyUser*'
83
+ reveal_type(MyUser.objects.get_or_404()) # N : Revealed type is 'main.MyUser'
84
84
85
85
[CASE model_imported_from_different_file]
86
86
from django.db import models
87
87
from models.main import Inventory
88
88
89
89
class Band(models.Model):
90
90
pass
91
- reveal_type(Inventory.objects) # E : Revealed type is 'django.db.models.manager.Manager[models.main.Inventory]'
92
- reveal_type(Band.objects) # E : Revealed type is 'django.db.models.manager.Manager[main.Band]'
91
+ reveal_type(Inventory.objects) # N : Revealed type is 'django.db.models.manager.Manager[models.main.Inventory]'
92
+ reveal_type(Band.objects) # N : Revealed type is 'django.db.models.manager.Manager[main.Band]'
93
93
[file models/__init__.py]
94
94
[file models/main.py]
95
95
from django.db import models
@@ -110,10 +110,10 @@ class Book(models.Model):
110
110
published_objects = PublishedBookManager()
111
111
annotated_objects = AnnotatedBookManager()
112
112
113
- reveal_type(AbstractPerson.abstract_persons) # E : Revealed type is 'django.db.models.manager.Manager[main.AbstractPerson]'
114
- reveal_type(Book.published_objects) # E : Revealed type is 'main.PublishedBookManager[main.Book]'
113
+ reveal_type(AbstractPerson.abstract_persons) # N : Revealed type is 'django.db.models.manager.Manager[main.AbstractPerson]'
114
+ reveal_type(Book.published_objects) # N : Revealed type is 'main.PublishedBookManager[main.Book]'
115
115
Book.published_objects.create(title='hello')
116
- reveal_type(Book.annotated_objects) # E : Revealed type is 'main.AnnotatedBookManager[main.Book]'
116
+ reveal_type(Book.annotated_objects) # N : Revealed type is 'main.AnnotatedBookManager[main.Book]'
117
117
Book.annotated_objects.create(title='hello')
118
118
[out]
119
119
@@ -149,11 +149,11 @@ class UnrelatedModel(models.Model):
149
149
class MyModel(models.Model):
150
150
pass
151
151
152
- reveal_type(UnrelatedModel.objects) # E : Revealed type is 'django.db.models.manager.Manager[main.UnrelatedModel]'
153
- reveal_type(UnrelatedModel.objects.first()) # E : Revealed type is 'Union[main.UnrelatedModel*, None]'
152
+ reveal_type(UnrelatedModel.objects) # N : Revealed type is 'django.db.models.manager.Manager[main.UnrelatedModel]'
153
+ reveal_type(UnrelatedModel.objects.first()) # N : Revealed type is 'Union[main.UnrelatedModel*, None]'
154
154
155
- reveal_type(MyModel.objects) # E : Revealed type is 'django.db.models.manager.Manager[main.MyModel]'
156
- reveal_type(MyModel.objects.first()) # E : Revealed type is 'Union[main.MyModel*, None]'
155
+ reveal_type(MyModel.objects) # N : Revealed type is 'django.db.models.manager.Manager[main.MyModel]'
156
+ reveal_type(MyModel.objects.first()) # N : Revealed type is 'Union[main.MyModel*, None]'
157
157
158
158
# Possible to specify objects without explicit annotation of models.Manager()
159
159
class UnrelatedModel2(models.Model):
@@ -162,11 +162,11 @@ class UnrelatedModel2(models.Model):
162
162
class MyModel2(models.Model):
163
163
pass
164
164
165
- reveal_type(UnrelatedModel2.objects) # E : Revealed type is 'django.db.models.manager.Manager[main.UnrelatedModel2]'
166
- reveal_type(UnrelatedModel2.objects.first()) # E : Revealed type is 'Union[main.UnrelatedModel2*, None]'
165
+ reveal_type(UnrelatedModel2.objects) # N : Revealed type is 'django.db.models.manager.Manager[main.UnrelatedModel2]'
166
+ reveal_type(UnrelatedModel2.objects.first()) # N : Revealed type is 'Union[main.UnrelatedModel2*, None]'
167
167
168
- reveal_type(MyModel2.objects) # E : Revealed type is 'django.db.models.manager.Manager[main.MyModel2]'
169
- reveal_type(MyModel2.objects.first()) # E : Revealed type is 'Union[main.MyModel2*, None]'
168
+ reveal_type(MyModel2.objects) # N : Revealed type is 'django.db.models.manager.Manager[main.MyModel2]'
169
+ reveal_type(MyModel2.objects.first()) # N : Revealed type is 'Union[main.MyModel2*, None]'
170
170
171
171
172
172
# Inheritance works
@@ -177,11 +177,11 @@ class MyModel3(ParentOfMyModel3):
177
177
pass
178
178
179
179
180
- reveal_type(ParentOfMyModel3.objects) # E : Revealed type is 'django.db.models.manager.Manager[main.ParentOfMyModel3]'
181
- reveal_type(ParentOfMyModel3.objects.first()) # E : Revealed type is 'Union[main.ParentOfMyModel3*, None]'
180
+ reveal_type(ParentOfMyModel3.objects) # N : Revealed type is 'django.db.models.manager.Manager[main.ParentOfMyModel3]'
181
+ reveal_type(ParentOfMyModel3.objects.first()) # N : Revealed type is 'Union[main.ParentOfMyModel3*, None]'
182
182
183
- reveal_type(MyModel3.objects) # E : Revealed type is 'django.db.models.manager.Manager[main.MyModel3]'
184
- reveal_type(MyModel3.objects.first()) # E : Revealed type is 'Union[main.MyModel3*, None]'
183
+ reveal_type(MyModel3.objects) # N : Revealed type is 'django.db.models.manager.Manager[main.MyModel3]'
184
+ reveal_type(MyModel3.objects.first()) # N : Revealed type is 'Union[main.MyModel3*, None]'
185
185
186
186
187
187
# Inheritance works with explicit objects in child
@@ -191,11 +191,11 @@ class ParentOfMyModel4(models.Model):
191
191
class MyModel4(ParentOfMyModel4):
192
192
objects = models.Manager[MyModel4]()
193
193
194
- reveal_type(ParentOfMyModel4.objects) # E : Revealed type is 'django.db.models.manager.Manager[main.ParentOfMyModel4]'
195
- reveal_type(ParentOfMyModel4.objects.first()) # E : Revealed type is 'Union[main.ParentOfMyModel4*, None]'
194
+ reveal_type(ParentOfMyModel4.objects) # N : Revealed type is 'django.db.models.manager.Manager[main.ParentOfMyModel4]'
195
+ reveal_type(ParentOfMyModel4.objects.first()) # N : Revealed type is 'Union[main.ParentOfMyModel4*, None]'
196
196
197
- reveal_type(MyModel4.objects) # E : Revealed type is 'django.db.models.manager.Manager[main.MyModel4]'
198
- reveal_type(MyModel4.objects.first()) # E : Revealed type is 'Union[main.MyModel4*, None]'
197
+ reveal_type(MyModel4.objects) # N : Revealed type is 'django.db.models.manager.Manager[main.MyModel4]'
198
+ reveal_type(MyModel4.objects.first()) # N : Revealed type is 'Union[main.MyModel4*, None]'
199
199
200
200
201
201
[out]
0 commit comments