{{{#!python
def test_annotation_and_alias_filter_in_subquery(self):
long_books_qs = (
Book.objects.filter(
pages__gt=400,
)
.annotate(book_annotate=Value(1))
.alias(book_alias=Value(1))
)
publisher_books_qs = (
Publisher.objects.filter(
book__in=long_books_qs
)
.values("name")
)
self.assertCountEqual(
publisher_books_qs,
[
{'name': 'Apress'},
{'name': 'Sams'},
{'name': 'Prentice Hall'},
{'name': 'Morgan Kaufmann'}
]
)
}}}
You should get this error:
{{{django.db.utils.OperationalError: sub-select returns 10 columns -
expected 1}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/33975>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* component: Uncategorized => Database layer (models, ORM)
--
Ticket URL: <https://code.djangoproject.com/ticket/33975#comment:1>
* status: new => closed
* resolution: => invalid
Comment:
This is a
[https://docs.djangoproject.com/en/stable/ref/models/expressions/#limiting-a
-subquery-to-a-single-column documented] and expected behavior.
--
Ticket URL: <https://code.djangoproject.com/ticket/33975#comment:2>
Comment (by Gabriel Muj):
Using either {{{.alias}}} or {{{.annotate}}} works as expected without
using {{{.values}}} to limit to 1 column. Why is that? but using both of
them doesn't seem work.
--
Ticket URL: <https://code.djangoproject.com/ticket/33975#comment:3>