diff --git a/jedi/plugins/django.py b/jedi/plugins/django.py index 1ab59464..e8ea9665 100644 --- a/jedi/plugins/django.py +++ b/jedi/plugins/django.py @@ -77,8 +77,9 @@ def _infer_field(cls, field): for value in lazy_values.infer(): if value.name.string_name == 'str': foreign_key_class_name = value.get_safe_value() - for v in cls.parent_context.py__getattribute__(foreign_key_class_name): - return DjangoModelField(v, field) + for v in cls.get_root_context().py__getattribute__(foreign_key_class_name): + if v.is_class(): + return DjangoModelField(v, field) elif value.is_class(): return DjangoModelField(value, field) diff --git a/test/completion/django.py b/test/completion/django.py index 8d56915c..b89e67d2 100644 --- a/test/completion/django.py +++ b/test/completion/django.py @@ -16,6 +16,7 @@ class BusinessModel(models.Model): category_fk = models.ForeignKey(Category) category_fk2 = models.ForeignKey('Category') category_fk3 = models.ForeignKey(1) + category_fk4 = models.ForeignKey('models') integer_field = models.IntegerField() big_integer_field = models.BigIntegerField() positive_integer_field = models.PositiveIntegerField() @@ -76,6 +77,8 @@ model_instance.category_fk2 model_instance.category_fk2.category_name #? models.ForeignKey() model_instance.category_fk3 +#? models.ForeignKey() +model_instance.category_fk4 #? models.ManyToManyField() model_instance.tags_m2m