|
169 | 169 | main: |
|
170 | 170 | from myapp.models import AbstractPerson, Book
|
171 | 171 | reveal_type(AbstractPerson.abstract_persons) # N: Revealed type is "django.db.models.manager.Manager[myapp.models.AbstractPerson]"
|
172 |
| - reveal_type(Book.published_objects) # N: Revealed type is "myapp.models.PublishedBookManager" |
| 172 | + reveal_type(Book.published_objects) # N: Revealed type is "myapp.models.PublishedBookManager[myapp.models.Book]" |
173 | 173 | Book.published_objects.create(title='hello')
|
174 |
| - reveal_type(Book.annotated_objects) # N: Revealed type is "myapp.models.AnnotatedBookManager" |
| 174 | + reveal_type(Book.annotated_objects) # N: Revealed type is "myapp.models.AnnotatedBookManager[myapp.models.Book]" |
175 | 175 | Book.annotated_objects.create(title='hello')
|
176 | 176 | installed_apps:
|
177 | 177 | - myapp
|
178 | 178 | files:
|
179 | 179 | - path: myapp/__init__.py
|
180 | 180 | - path: myapp/models.py
|
181 | 181 | content: |
|
182 |
| - from typing import ClassVar |
183 | 182 | from django.db import models
|
184 | 183 |
|
185 | 184 | class AbstractPerson(models.Model):
|
186 |
| - abstract_persons: ClassVar[models.Manager["AbstractPerson"]] = models.Manager['AbstractPerson']() |
| 185 | + abstract_persons = models.Manager['AbstractPerson']() |
187 | 186 | class PublishedBookManager(models.Manager['Book']):
|
188 | 187 | pass
|
189 | 188 | class AnnotatedBookManager(models.Manager['Book']):
|
190 | 189 | pass
|
191 | 190 | class Book(models.Model):
|
192 | 191 | title = models.CharField(max_length=50)
|
193 |
| - published_objects: ClassVar[PublishedBookManager] = PublishedBookManager() |
194 |
| - annotated_objects: ClassVar[AnnotatedBookManager] = AnnotatedBookManager() |
| 192 | + published_objects = PublishedBookManager() |
| 193 | + annotated_objects = AnnotatedBookManager() |
195 | 194 |
|
196 | 195 | - case: managers_inherited_from_abstract_classes_multiple_inheritance
|
197 | 196 | main: |
|
|
201 | 200 | reveal_type(AbstractBase1.manager1)
|
202 | 201 | reveal_type(AbstractBase2.restricted)
|
203 | 202 | out: |
|
204 |
| - main:2: note: Revealed type is "myapp.models.CustomManager1" |
205 |
| - main:3: note: Revealed type is "myapp.models.CustomManager2" |
206 |
| - main:4: note: Revealed type is "myapp.models.CustomManager1" |
207 |
| - main:5: note: Revealed type is "myapp.models.CustomManager2" |
| 203 | + main:2: note: Revealed type is "myapp.models.CustomManager1[myapp.models.Child]" |
| 204 | + main:3: note: Revealed type is "myapp.models.CustomManager2[myapp.models.Child]" |
| 205 | + main:4: note: Revealed type is "myapp.models.CustomManager1[myapp.models.AbstractBase1]" |
| 206 | + main:5: note: Revealed type is "myapp.models.CustomManager2[myapp.models.AbstractBase2]" |
208 | 207 | installed_apps:
|
209 | 208 | - myapp
|
210 | 209 | files:
|
211 | 210 | - path: myapp/__init__.py
|
212 | 211 | - path: myapp/models.py
|
213 | 212 | content: |
|
214 |
| - from typing import ClassVar |
215 | 213 | from django.db import models
|
216 | 214 | class CustomManager1(models.Manager['AbstractBase1']):
|
217 | 215 | pass
|
218 | 216 | class AbstractBase1(models.Model):
|
219 | 217 | class Meta:
|
220 | 218 | abstract = True
|
221 | 219 | name = models.CharField(max_length=50)
|
222 |
| - manager1: ClassVar[CustomManager1] = CustomManager1() |
| 220 | + manager1 = CustomManager1() |
223 | 221 | class CustomManager2(models.Manager['AbstractBase2']):
|
224 | 222 | pass
|
225 | 223 | class AbstractBase2(models.Model):
|
226 | 224 | class Meta:
|
227 | 225 | abstract = True
|
228 | 226 | value = models.CharField(max_length=50)
|
229 |
| - restricted: ClassVar[CustomManager2] = CustomManager2() |
| 227 | + restricted = CustomManager2() |
230 | 228 |
|
231 | 229 | class Child(AbstractBase1, AbstractBase2):
|
232 | 230 | pass
|
|
453 | 451 | - path: myapp/__init__.py
|
454 | 452 | - path: myapp/models.py
|
455 | 453 | content: |
|
456 |
| - from typing import ClassVar |
457 |
| - from typing_extensions import Self |
458 | 454 | from django.db import models
|
459 | 455 | from django.contrib.sites.models import Site
|
460 | 456 | from django.contrib.sites.managers import CurrentSiteManager
|
461 | 457 |
|
462 | 458 | class MyModel(models.Model):
|
463 | 459 | site = models.ForeignKey(Site, on_delete=models.CASCADE)
|
464 |
| - on_site: ClassVar[CurrentSiteManager[Self]] = CurrentSiteManager() |
| 460 | + on_site = CurrentSiteManager() |
465 | 461 |
|
466 | 462 | - case: test_emits_error_for_unresolved_managers
|
467 | 463 | main: |
|
|
0 commit comments