Skip to content

Commit 4ea9b87

Browse files
committed
Add explicit test for .from_quertset Any fallback
1 parent 023106f commit 4ea9b87

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

tests/typecheck/fields/test_related.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -663,6 +663,37 @@
663663
Transaction().test()
664664
665665
666+
- case: foreign_key_relationship_for_models_with_custom_manager_unsolvable
667+
main: |
668+
from myapp.models import Transaction
669+
installed_apps:
670+
- myapp
671+
files:
672+
- path: myapp/__init__.py
673+
- path: myapp/models.py
674+
content: |
675+
from django.db import models
676+
from django.db.models.manager import BaseManager
677+
class TransactionQuerySet(models.QuerySet):
678+
def custom(self) -> None:
679+
pass
680+
681+
# Note, that we cannot resolve dynamic calls for custom managers:
682+
class Transaction(models.Model):
683+
objects = BaseManager.from_queryset(TransactionQuerySet)
684+
def test(self) -> None:
685+
reveal_type(self.transactionlog_set)
686+
# We use a fallback Any type:
687+
reveal_type(Transaction.objects.custom())
688+
689+
class TransactionLog(models.Model):
690+
transaction = models.ForeignKey(Transaction, on_delete=models.CASCADE)
691+
out: |
692+
myapp/models:9: error: `.from_queryset` called from inside model class body
693+
myapp/models:11: note: Revealed type is "django.db.models.manager.RelatedManager[myapp.models.TransactionLog]"
694+
myapp/models:13: note: Revealed type is "Any"
695+
696+
666697
- case: resolve_primary_keys_for_foreign_keys_with_abstract_self_model
667698
main: |
668699
from myapp.models import User

0 commit comments

Comments
 (0)