From d3bc86ec11bb22f06b5e30fac891ef3e43f82a6d Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Tue, 18 Aug 2015 19:19:01 -0400 Subject: [PATCH] Fixed #25284 -- Documented removal of implicit QuerySet __in lookups. --- docs/releases/1.9.txt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/releases/1.9.txt b/docs/releases/1.9.txt index b3b09abbb5..54323c09f7 100644 --- a/docs/releases/1.9.txt +++ b/docs/releases/1.9.txt @@ -877,6 +877,22 @@ returned a list, but an iterator is more efficient. Existing code that depends on ``list`` specific features, such as indexing, can be ported by converting the iterator into a ``list`` using ``list()``. +Implicit ``QuerySet`` ``__in`` lookup removed +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In earlier versions, queries such as:: + + Model.objects.filter(related_id=RelatedModel.objects.all()) + +would implicitly convert to:: + + Model.objects.filter(related_id__in=RelatedModel.objects.all()) + +resulting in SQL like ``"related_id IN (SELECT id FROM ...)"``. + +This implicit ``__in`` no longer happens so the "IN" SQL is now "=", and if the +subquery returns multiple results, at least some databases will throw an error. + Miscellaneous ~~~~~~~~~~~~~