﻿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
19964	A query including other query affects and breaks the first one	German M. Bravo	Anssi Kääriäinen	"This code breaks the `parents` query
{{{#!python
# I have:
from django.db import models

class MyObject(models.Model):
    parent = models.ForeignKey('self', null=True, blank=True, related_name='children')
    data = models.CharField(max_length=100)
    created_at = models.DateTimeField(auto_now_add=True)


def test():
    # Then I do:
    parents = MyObject.objects.filter(models.Q(parent=models.F('id'))).order_by('-created_at')[:10]

    children = MyObject.objects.filter(parent__in=parents).exclude(parent=models.F('id'))

    # and this is what I get:

    print 'A:', parents.query
    # A: SELECT ""myapp_myobject"".""id"", ""myapp_myobject"".""parent_id"", ""myapp_myobject"".""data"", ""myapp_myobject"".""created_at"" FROM ""myapp_myobject"" WHERE ""myapp_myobject"".""parent_id"" =  ""myapp_myobject"".""id"" ORDER BY ""myapp_myobject"".""created_at"" DESC LIMIT 10

    children.count()
    # 0

    print 'B:', parents.query
    # B: SELECT ""myapp_myobject"".""id"", ""myapp_myobject"".""parent_id"", ""myapp_myobject"".""data"", ""myapp_myobject"".""created_at"" FROM ""myapp_myobject"" WHERE ""myapp_myobject"".""parent_id"" =  ""U0"".""id"" ORDER BY ""myapp_myobject"".""created_at"" DESC LIMIT 10

    print parents
    # missing FROM-clause entry for table ""U0""
    # LINE 1: ...ll_myobject"" WHERE ""myapp_myobject"".""parent_id"" =  ""U0"".""id"" ...
}}}
"	Bug	closed	Database layer (models, ORM)	1.4	Normal	fixed		German M. Bravo	Accepted	0	0	0	0	0	0
