diff --git a/django-stubs/db/models/fields/related.pyi b/django-stubs/db/models/fields/related.pyi index ae03ea7..053c274 100644 --- a/django-stubs/db/models/fields/related.pyi +++ b/django-stubs/db/models/fields/related.pyi @@ -189,7 +189,7 @@ class ManyToManyField(RelatedField[_ST, _GT]): swappable: bool = ... def __init__( self, - to: Union[Type[_T], str], + to: Union[Type[Model], str], related_name: Optional[str] = ..., related_query_name: Optional[str] = ..., limit_choices_to: Optional[Union[Dict[str, Any], Callable[[], Any], Q]] = ..., diff --git a/tests/typecheck/fields/test_related.yml b/tests/typecheck/fields/test_related.yml index 0a79d19..714242f 100644 --- a/tests/typecheck/fields/test_related.yml +++ b/tests/typecheck/fields/test_related.yml @@ -672,3 +672,9 @@ objects = OrderManager() user = models.ForeignKey(to=User, on_delete=models.CASCADE, related_name='orders') +- case: many_to_many_field_can_be_used_in_alias + main: | + from typing import TypeVar, Sequence, Union + from django.db import models + T = TypeVar("T", bound=models.Model) + ManyToManyFieldAlias = Union["models.ManyToManyField[Sequence[T], models.manager.RelatedManager[T]]"]