diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2019-12-09 15:32:09 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2019-12-09 15:45:53 +0100 |
| commit | d6505273cd889886caca57884fa79941b18c2ea6 (patch) | |
| tree | 3b61de44e01283a32891afe7a8407828d2f47e97 | |
| parent | 4540842bc385a60cf32970a8b372b80d47704bca (diff) | |
Refs #31044 -- Fixed error message when using Prefetch with a values_list() queryset.
| -rw-r--r-- | django/db/models/query.py | 3 | ||||
| -rw-r--r-- | tests/prefetch_related/tests.py | 6 |
2 files changed, 6 insertions, 3 deletions
diff --git a/django/db/models/query.py b/django/db/models/query.py index 764d3ea289..38c13584d1 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -1541,7 +1541,8 @@ class Prefetch: ) ): raise ValueError( - 'Prefetch querysets cannot use raw() and values().' + 'Prefetch querysets cannot use raw(), values(), and ' + 'values_list().' ) if to_attr: self.prefetch_to = LOOKUP_SEP.join(lookup.split(LOOKUP_SEP)[:-1] + [to_attr]) diff --git a/tests/prefetch_related/tests.py b/tests/prefetch_related/tests.py index 35c2a1c6b8..226dfb8ab9 100644 --- a/tests/prefetch_related/tests.py +++ b/tests/prefetch_related/tests.py @@ -815,15 +815,17 @@ class CustomPrefetchTests(TestCase): self.traverse_qs(list(houses), [['occupants', 'houses', 'main_room']]) def test_values_queryset(self): - msg = 'Prefetch querysets cannot use raw() and values().' + msg = 'Prefetch querysets cannot use raw(), values(), and values_list().' with self.assertRaisesMessage(ValueError, msg): Prefetch('houses', House.objects.values('pk')) + with self.assertRaisesMessage(ValueError, msg): + Prefetch('houses', House.objects.values_list('pk')) # That error doesn't affect managers with custom ModelIterable subclasses self.assertIs(Teacher.objects_custom.all()._iterable_class, ModelIterableSubclass) Prefetch('teachers', Teacher.objects_custom.all()) def test_raw_queryset(self): - msg = 'Prefetch querysets cannot use raw() and values().' + msg = 'Prefetch querysets cannot use raw(), values(), and values_list().' with self.assertRaisesMessage(ValueError, msg): Prefetch('houses', House.objects.raw('select pk from house')) |
