2 つの単純なモデルがあります。
class Image(Model):
photo = models.CharField()
class Box(Model):
name = models.CharField()
image = models.ForeignKey(Image, blank=True, null=True)
Image のオブジェクトを削除したい場合、Django は Box モデルに対して select クエリを作成します。
>> Image.objects.all()[0].delete()
>> print len(connection.queries)
2
>> connection.queries
{u'time': u'0.000', u'sql': u'QUERY = u\'SELECT "box"."id", ... FROM "box" WHERE "image"."image_id" IN (%s)\' - PARAMS = (1,)'}
{u'time': u'0.000', u'sql': u'QUERY = u\'DELETE FROM "image" WHERE "id" IN (%s)\' - PARAMS = (1,)'}
ジャンゴ 1.6b2
私は で試しましたがon_delete=models.SET_NULL
、sqlite と PostgreSQL でも常に同じ結果が得られました。