-
-
Couldn't load subscription status.
- Fork 516
Labels
bugSomething isn't workingSomething isn't working
Description
Bug report
What's wrong
_default_manager is not being setup in plugin when using django-modeltranslations as it replaces the default manager and base manager to be modeltranslation.manager.MultilingualManager which causes
django-stubs/mypy_django_plugin/transformers/models.py
Lines 285 to 291 in 24a3b22
| try: | |
| default_manager_info = self.lookup_typeinfo_or_incomplete_defn_error(default_manager_fullname) | |
| except helpers.IncompleteDefnException as exc: | |
| # Check if default manager could be a generated manager | |
| base_manager_fullname = helpers.get_class_fullname(default_manager_cls.__bases__[0]) | |
| generated_manager_info = self.get_generated_manager_info(default_manager_fullname, base_manager_fullname) | |
| if generated_manager_info is None: |
Instead of giving up assigning a generic manager in AddDefaultManagerAttribute fixes the issue though not sure if this is the right thing to do:
class AddDefaultManagerAttribute(ModelClassInitializer):
def run_with_model_cls(self, model_cls: Type[Model]) -> None:
if "_default_manager" in self.model_classdef.info.names:
return None
default_manager_cls = model_cls._meta.default_manager.__class__
default_manager_fullname = helpers.get_class_fullname(default_manager_cls)
try:
default_manager_info = self.lookup_typeinfo_or_incomplete_defn_error(default_manager_fullname)
except helpers.IncompleteDefnException as exc:
# Check if default manager could be a generated manager
base_manager_fullname = helpers.get_class_fullname(default_manager_cls.__bases__[0])
generated_manager_info = self.get_generated_manager_info(default_manager_fullname, base_manager_fullname)
if generated_manager_info is None:
# Manager doesn't appear to be generated. Giving up by setting up a generic manager
default_manager_info = self.lookup_typeinfo_or_incomplete_defn_error("django.db.models.manager.Manager")
default_manager = Instance(default_manager_info, [Instance(self.model_classdef.info, [])])
self.add_new_node_to_model_class("_default_manager", default_manager)How is that should be
_default_manager should be setup
System information
- OS: docker python:3.10 image
pythonversion: 3.10djangoversion: 3.2.13mypyversion: 0.950django-stubsversion: 1.11.0 and 24a3b22django-stubs-extversion: 0.4.0
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working