私は次のモデル(部分)モデル定義を持っています:
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")
生成されたクエリを実行manage.py debugsqlquery
して調べると、存在しないはずの結合が取得されます。
>>> a_qs = Album.objects.filter(parent=None)
>>> for a in a_qs:
... print a
...
結果のクエリは次のとおりです。
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]
、、およびすべて結合を生成LEFT OUTER JOIN
しようとしました。parent_id=None
parent__isnull=True
parent_id__isnull=True
結合を作成せずにクエリを実行するにはどうすればよいですか?