From 7756792bba6cf6d4254917fd2515e269101dd9ef Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Wed, 22 Apr 2020 00:33:51 +0200 Subject: [PATCH] Fix another issue with foreign keys --- jedi/plugins/django.py | 5 +++-- test/completion/django.py | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) 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