id summary reporter owner description type status component version severity resolution keywords cc stage has_patch needs_docs needs_tests needs_better_patch easy ui_ux 25284 QuerySet.filter(related_id=queryset) no longer does implicit __in lookup Richard Eames nobody "Consider the following: {{{#!python Model.objects.filter(related_id = RelatedModel.objects.all()) }}} In django 1.8, the resulting query contains ""related_id **IN** (SELECT id FROM ...)"" In django 1.9, the ""IN"" is changed to an ""="", which causes the query to break in MySql and Postgres. Is this an intentional change? If so, it needs to be documented as a breaking/backwards in-compatible change. Test case: {{{#!python class Egg(models.Model): class Meta: app_label = 'spam' value = models.IntegerField() class Spam(models.Model): class Meta: app_label = 'spam' egg = models.ForeignKey(Egg) class TestAssign(TestCase): def test_subquery(self): egg1 = Egg.objects.create(value=1) egg11 = Egg.objects.create(value=1) Spam.objects.create(egg=egg1) Spam.objects.create(egg=egg11) eggs1=Egg.objects.filter(value=1) q = Spam.objects.filter(egg__in=eggs1) self.assertEqual(2, len(list(q))) }}}" Cleanup/optimization closed Documentation dev Normal fixed Accepted 1 0 0 0 0 0