Skip to content

Commit a60eaf1

Browse files
committed
Don't remove objects attribute from Model in plugin
Partially reverts typeddjango#1672
1 parent a28717d commit a60eaf1

File tree

5 files changed

+5
-12
lines changed

5 files changed

+5
-12
lines changed

django-stubs/db/models/base.pyi

+1-2
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ class Model(metaclass=ModelBase):
3636
# and re-add them to correct concrete subclasses of 'Model'
3737
DoesNotExist: Final[type[ObjectDoesNotExist]]
3838
MultipleObjectsReturned: Final[type[BaseMultipleObjectsReturned]]
39-
# This 'objects' attribute will be deleted, via the plugin, in favor of managing it
40-
# to only exist on subclasses it exists on during runtime.
39+
4140
objects: ClassVar[Manager[Self]]
4241

4342
_meta: ClassVar[Options[Self]]

mypy_django_plugin/transformers/models.py

-6
Original file line numberDiff line numberDiff line change
@@ -960,12 +960,6 @@ def adjust_model_class(cls, ctx: ClassDefContext) -> None:
960960
):
961961
del ctx.cls.info.names["MultipleObjectsReturned"]
962962

963-
objects = ctx.cls.info.names.get("objects")
964-
if objects is not None and isinstance(objects.node, Var) and not objects.plugin_generated:
965-
del ctx.cls.info.names["objects"]
966-
967-
return
968-
969963
def get_exception_bases(self, name: str) -> List[Instance]:
970964
bases = []
971965
for model_base in self.model_classdef.info.direct_base_classes():

tests/typecheck/models/test_abstract.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
Recursive(parent=Recursive(parent=None))
5252
Concrete(parent=Concrete(parent=None))
5353
out: |
54-
main:4: error: "Type[Recursive]" has no attribute "objects" [attr-defined]
54+
main:4: error: Unexpected attribute "parent" for model "Recursive" [misc]
5555
main:5: error: Cannot instantiate abstract class "Recursive" with abstract attributes "DoesNotExist" and "MultipleObjectsReturned" [abstract]
5656
main:5: error: Unexpected attribute "parent" for model "Recursive" [misc]
5757
installed_apps:

tests/typecheck/models/test_contrib_models.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
- case: can_override_abstract_user_manager
3939
main: |
4040
from myapp.models import MyBaseUser, MyUser
41-
reveal_type(MyBaseUser.objects) # N: Revealed type is "myapp.models.MyBaseUserManager[myapp.models.MyBaseUser]"
41+
reveal_type(MyBaseUser.objects) # N: Revealed type is "myapp.models.MyBaseUserManager"
4242
reveal_type(MyBaseUser.objects.all()) # N: Revealed type is "django.db.models.query.QuerySet[myapp.models.MyBaseUser, myapp.models.MyBaseUser]"
4343
reveal_type(MyUser.objects) # N: Revealed type is "myapp.models.MyUserManager"
4444
reveal_type(MyUser.objects.all()) # N: Revealed type is "django.db.models.query.QuerySet[myapp.models.MyUser, myapp.models.MyUser]"
@@ -56,7 +56,7 @@
5656
...
5757
5858
class MyBaseUser(AbstractBaseUser):
59-
objects = MyBaseUserManager()
59+
objects: ClassVar[MyBaseUserManager] = MyBaseUserManager()
6060
6161
class MyUserManager(UserManager["MyUser"]):
6262
...

tests/typecheck/models/test_meta_options.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@
8181
8282
# Errors:
8383
AbstractModel() # E: Cannot instantiate abstract class "AbstractModel" with abstract attributes "DoesNotExist" and "MultipleObjectsReturned" [abstract]
84-
AbstractModel.objects.create() # E: "Type[AbstractModel]" has no attribute "objects" [attr-defined]
84+
AbstractModel.objects.create()
8585
installed_apps:
8686
- myapp
8787
files:

0 commit comments

Comments
 (0)