diff --git a/django-stubs/db/models/query.pyi b/django-stubs/db/models/query.pyi index 821346c..a7acc4a 100644 --- a/django-stubs/db/models/query.pyi +++ b/django-stubs/db/models/query.pyi @@ -169,6 +169,9 @@ class _ValuesQuerySet(Generic[_T, _Row], Collection[_Row], Reversible[_Row], Que def latest(self, *fields: Any, field_name: Optional[Any] = ...) -> _Row: ... # type: ignore def first(self) -> Optional[_Row]: ... # type: ignore def last(self) -> Optional[_Row]: ... # type: ignore + def distinct(self, *field_names: Any) -> _ValuesQuerySet[_T, _Row]: ... # type: ignore + def order_by(self, *field_names: Any) -> _ValuesQuerySet[_T, _Row]: ... # type: ignore + def all(self) -> _ValuesQuerySet[_T, _Row]: ... # type: ignore class RawQuerySet(Iterable[_T], Sized): query: RawQuery diff --git a/tests/typecheck/managers/querysets/test_values_list.yml b/tests/typecheck/managers/querysets/test_values_list.yml index c567e56..b153428 100644 --- a/tests/typecheck/managers/querysets/test_values_list.yml +++ b/tests/typecheck/managers/querysets/test_values_list.yml @@ -26,6 +26,25 @@ name = models.CharField(max_length=100) age = models.IntegerField() +- case: values_list_supports_queryset_methods + main: | + from myapp.models import MyUser + query = MyUser.objects.values_list('name') + reveal_type(query.order_by("name").get()) # N: Revealed type is "Tuple[builtins.str]" + reveal_type(query.distinct("name").get()) # N: Revealed type is "Tuple[builtins.str]" + reveal_type(query.distinct().get()) # N: Revealed type is "Tuple[builtins.str]" + reveal_type(query.all().get()) # N: Revealed type is "Tuple[builtins.str]" + installed_apps: + - myapp + files: + - path: myapp/__init__.py + - path: myapp/models.py + content: | + from django.db import models + class MyUser(models.Model): + name = models.CharField(max_length=100) + age = models.IntegerField() + - case: values_list_related_model_fields main: | from myapp.models import Post, Blog