mirror of
https://github.com/davidhalter/django-stubs.git
synced 2025-12-06 20:24:31 +08:00
49 lines
1.9 KiB
Plaintext
49 lines
1.9 KiB
Plaintext
[CASE test_every_model_has_objects_queryset_available]
|
|
from django.db import models
|
|
class User(models.Model):
|
|
pass
|
|
reveal_type(User.objects) # E: Revealed type is 'django.db.models.manager.Manager[main.User]'
|
|
reveal_type(User.objects.get()) # E: Revealed type is 'main.User*'
|
|
|
|
[CASE test_leave_as_is_if_objects_is_set_and_fill_typevars_with_outer_class]
|
|
from django.db import models
|
|
|
|
class UserManager(models.Manager[User]):
|
|
def get_or_404(self) -> User:
|
|
pass
|
|
|
|
class User(models.Model):
|
|
objects = UserManager()
|
|
|
|
reveal_type(User.objects) # E: Revealed type is 'main.UserManager'
|
|
reveal_type(User.objects.get()) # E: Revealed type is 'main.User*'
|
|
reveal_type(User.objects.get_or_404()) # E: Revealed type is 'main.User'
|
|
|
|
[CASE test_model_objects_attribute_present_in_case_of_model_cls_passed_as_parameter]
|
|
from typing import Type
|
|
from django.db import models
|
|
|
|
class Base:
|
|
def __init__(self, model_cls: Type[models.Model]):
|
|
self.model_cls = model_cls
|
|
class MyModel(models.Model):
|
|
pass
|
|
reveal_type(Base(MyModel).model_cls.objects) # E: Revealed type is 'django.db.models.manager.Manager[django.db.models.base.Model]'
|
|
|
|
[CASE test_model_objects_attribute_present_in_case_of_model_cls_passed_as_generic_parameter]
|
|
from typing import TypeVar, Generic, Type
|
|
from django.db import models
|
|
|
|
_T = TypeVar('_T', bound=models.Model)
|
|
class Base(Generic[_T]):
|
|
def __init__(self, model_cls: Type[_T]):
|
|
self.model_cls = model_cls
|
|
reveal_type(self.model_cls.objects) # E: Revealed type is 'django.db.models.manager.Manager[django.db.models.base.Model]'
|
|
class MyModel(models.Model):
|
|
pass
|
|
base_instance = Base(MyModel)
|
|
reveal_type(base_instance.model_cls.objects) # E: Revealed type is 'django.db.models.manager.Manager[main.MyModel]'
|
|
|
|
class Child(Base[MyModel]):
|
|
def method(self) -> None:
|
|
reveal_type(self.model_cls.objects) # E: Revealed type is 'django.db.models.manager.Manager[main.MyModel]' |