title: How to keep django from creating join on parent=None
body: <p>I have the follow model (partial) model definition:</p>
  
  <pre><code>class Album(models.Model):
    name          = models.CharField(max_length=50, 
                                   null=False, 
                                   blank=True)
    parent        = models.ForeignKey("self",
                                    null = True,
                                    default = None,
                                    blank = True,
                                    help_text="Points to a parent album",
                                    related_name="children")
  </code></pre>
  
  <p>When I run <code>manage.py debugsqlquery</code> and examine the generated queries I'm getting a join that should not be there:</p>
  
  <pre><code>&gt;&gt;&gt; a_qs = Album.objects.filter(parent=None)
  &gt;&gt;&gt; for a in a_qs:
  ...  print a
  ... 
  </code></pre>
  
  <p>The resulting query is:</p>
  
  <pre><code>SELECT "photos_album"."id",
     "photos_album"."name",
     "photos_album"."parent_id",
     "photos_album"."owner_id",
     "photos_album"."order",
     "photos_album"."system",
     "photos_album"."created",
     "photos_album"."last_modified"
  FROM "photos_album"
  LEFT OUTER JOIN "photos_album" T2 ON ("photos_album"."parent_id" = T2."id")
  WHERE T2."id" IS NULL
  ORDER BY "photos_album"."order" ASC, "photos_album"."name" ASC  [0.42ms]
  </code></pre>
  
  <p>I am attempting to get rid of the <code>LEFT OUTER JOIN</code> I've tried <code>parent_id=None</code>, <code>parent__isnull=True</code>, and <code>parent_id__isnull=True</code> and all generate the join.</p>
  
  <p>How do I do I perform the query without it creating a join?</p>