Skip to content

Commit

Permalink
fixup! fixup! fixup! Add better support for ManyToManyField's `thro…
Browse files Browse the repository at this point in the history
…ugh` model
  • Loading branch information
flaeppe committed Sep 18, 2023
1 parent e1c9ccf commit 7a23f4c
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 5 deletions.
2 changes: 1 addition & 1 deletion mypy_django_plugin/lib/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -391,7 +391,7 @@ def add_new_manager_base(api: SemanticAnalyzerPluginInterface, fullname: str) ->
bases[fullname] = 1


def is_abstract_model(model: TypeInfo, /) -> bool:
def is_abstract_model(model: TypeInfo) -> bool:
if model.metaclass_type is None or model.metaclass_type.type.fullname != fullnames.MODEL_METACLASS_FULLNAME:
return False

Expand Down
3 changes: 1 addition & 2 deletions mypy_django_plugin/transformers/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,6 @@ class M2MArguments(NamedTuple):

def get_model_info_from_call_arg(
call_arg: CallArg,
/,
*,
current_module_name: str,
api: Union[TypeChecker, SemanticAnalyzer],
Expand Down Expand Up @@ -324,7 +323,7 @@ def fill_model_args_for_many_to_many_field(
default_return_type: Instance,
django_context: DjangoContext,
) -> Instance:
if not ctx.args or not ctx.args[0]:
if not ctx.args or not ctx.args[0] or len(default_return_type.args) < 2:
return default_return_type

args = get_m2m_arguments(ctx=ctx, model_info=model_info, django_context=django_context)
Expand Down
5 changes: 3 additions & 2 deletions tests/typecheck/fields/test_related.yml
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,9 @@
- case: many_to_many_field_converts_to_queryset_of_model_type
main: |
from myapp.models import App, Member
reveal_type(Member().apps) # N: Revealed type is "django.db.models.fields.related_descriptors.ManyRelatedManager[myapp.models.App]"
reveal_type(Member().apps.get()) # N: Revealed type is "myapp.models.App"
reveal_type(App().members) # N: Revealed type is "django.db.models.manager.RelatedManager[myapp.models.Member]"
reveal_type(App().members.get()) # N: Revealed type is "myapp.models.Member"
reveal_type(Member.apps.field) # N: Revealed type is "django.db.models.fields.related.ManyToManyField[Any, myapp.models.Member_apps]"
# XXX the following is not correct:
Expand Down Expand Up @@ -599,7 +601,6 @@
- path: myapp/models.py
content: |
from django.db import models
from django.db.models import FileField
class Profile(models.Model):
pass
class Publisher(models.Model):
Expand All @@ -608,7 +609,7 @@
publisher = models.ForeignKey(Publisher, on_delete=models.CASCADE)
class Author(models.Model):
blogs = models.ManyToManyField(Blog)
file = FileField()
file = models.FileField()
- case: test_foreign_key_from_superclass_inherits_correctly
Expand Down

0 comments on commit 7a23f4c

Please sign in to comment.