Skip to content

Commit e6d65d2

Browse files
authored
Fix crash when FK references unknown 'app_label' (#1342)
Plugin previously crashed running the provided test case, now it yields an intended error message instead.
1 parent 832163d commit e6d65d2

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

mypy_django_plugin/django/context.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,10 @@ def get_field_related_model_cls(
344344
related_model_fullname = field.model.__module__ + "." + related_model_cls
345345
related_model_cls = self.get_model_class_by_fullname(related_model_fullname)
346346
else:
347-
related_model_cls = self.apps_registry.get_model(related_model_cls)
347+
try:
348+
related_model_cls = self.apps_registry.get_model(related_model_cls)
349+
except LookupError:
350+
return None
348351

349352
return related_model_cls
350353

tests/typecheck/fields/test_related.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -928,3 +928,18 @@
928928
929929
class SalesMan(models.Model):
930930
client = models.ManyToManyField(CustomUser)
931+
932+
- case: test_fails_if_app_label_is_unknown_in_relation_field
933+
main: |
934+
from installed.models import InstalledModel
935+
installed_apps:
936+
- installed
937+
files:
938+
- path: installed/__init__.py
939+
- path: installed/models.py
940+
content: |
941+
from django.db import models
942+
class InstalledModel(models.Model):
943+
non_installed = models.ForeignKey( # E: Cannot find model 'not_installed.NonInstalledModel' referenced in field 'non_installed'
944+
"not_installed.NonInstalledModel", on_delete=models.CASCADE
945+
)

0 commit comments

Comments
 (0)