Fix type of <fieldname>_id when using ForeignKey(to_field=) (#1176)

* Fix type of <fieldname>_id when using ForeignKey(to_field=)

Previously mypy_django_plugin would always use the field type of target
model's primary key, but `to_field` can refer to a different field type.

* Fixes

* More fixes
This commit is contained in:
Marti Raudsepp
2022-09-30 10:05:57 +03:00
committed by GitHub
parent 5c616863dc
commit db14454199
4 changed files with 45 additions and 2 deletions

View File

@@ -253,9 +253,12 @@ class AddRelatedModelsId(ModelClassInitializer):
if related_model_cls._meta.abstract:
continue
rel_primary_key_field = self.django_context.get_primary_key_field(related_model_cls)
rel_target_field = self.django_context.get_related_target_field(related_model_cls, field)
if not rel_target_field:
continue
try:
field_info = self.lookup_class_typeinfo_or_incomplete_defn_error(rel_primary_key_field.__class__)
field_info = self.lookup_class_typeinfo_or_incomplete_defn_error(rel_target_field.__class__)
except helpers.IncompleteDefnException as exc:
if not self.api.final_iteration:
raise exc