From 310c41024e049eb2b8d6d405c88d902696d4964e Mon Sep 17 00:00:00 2001 From: Petter Friberg Date: Tue, 30 Jul 2024 21:02:46 +0200 Subject: [PATCH] Test usage of `from_queryset` manager as reverse manager --- .../managers/querysets/test_from_queryset.yml | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/typecheck/managers/querysets/test_from_queryset.yml b/tests/typecheck/managers/querysets/test_from_queryset.yml index 56f62d023..ee73505eb 100644 --- a/tests/typecheck/managers/querysets/test_from_queryset.yml +++ b/tests/typecheck/managers/querysets/test_from_queryset.yml @@ -946,3 +946,25 @@ main:12: error: Argument 1 to "from_queryset" of "BaseManager" has incompatible type ""; expected "Type[QuerySet[Model, Model]]" [arg-type] main:17: note: Revealed type is "Type[django.db.models.manager.Manager[django.db.models.base.Model]]" main:17: error: Argument 1 to "from_queryset" of "BaseManager" has incompatible type "Type[NonQSGeneric[Any]]"; expected "Type[QuerySet[Model, Model]]" [arg-type] + +- case: test_reverse_manager_with_foreign_key + main: | + from myapp.models import B + reveal_type(B().a_set.filter(field="something")) # N: Revealed type is "myapp.models.QS" + installed_apps: + - myapp + files: + - path: myapp/__init__.py + - path: myapp/models.py + content: | + from django.db import models + + class B(models.Model): ... + + class QS(models.QuerySet["A"]): ... + + Manager = models.Manager.from_queryset(QS) + class A(models.Model): + field = models.CharField() + b = models.ForeignKey(B, on_delete=models.CASCADE) + objects = Manager()