﻿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
13438	bug with isnull ForeignKey queries?	Waldemar Kornewald	nobody	"I'm not sure if this really is a bug. I have these models:

{{{
#!python
from django.db import models

class A(models.Model):
    number = models.IntegerField(null=True)

class X(models.Model):
    fk = models.ForeignKey(A, null=True)
}}}

And when I run this query:

{{{
#!python
X.objects.filter(fk=None)[:10]
}}}

The generated SQL is this:

{{{
#!sql
SELECT ""djangoappengine_x"".""id"", ""djangoappengine_x"".""fk_id""
FROM ""djangoappengine_x""
LEFT OUTER JOIN ""djangoappengine_a""
  ON (""djangoappengine_x"".""fk_id"" = ""djangoappengine_a"".""id"")
WHERE ""djangoappengine_a"".""id"" IS NULL
LIMIT 10
}}}

Shouldn't the generated query be this:

{{{
#!sql
SELECT ""djangoappengine_x"".""id"", ""djangoappengine_x"".""fk_id""
FROM ""djangoappengine_x""
WHERE ""djangoappengine_x"".""fk_id"" IS NULL
LIMIT 10
}}}

Is there a reason why the query uses a LEFT OUTER JOIN on model A in this case (and the JOIN doesn't get trimmed) or is this just an incomplete edge case where the actual intention is to handle queries like `X.objects.filter(fk__number=None)`?"		closed	Database layer (models, ORM)	dev		duplicate			Unreviewed	0	0	0	0	0	0
