查看Django queryset delete的SQL查询

tca*_*uce 12 django django-orm

你如何看待Django生成的SQL DELETE

SELECT查询集上执行操作时,您可以执行以下操作:

>>> qs = Entry.objects.filter(date__gt='2010-06-01')
>>> qs.query.as_sql()
('SELECT ...)
Run Code Online (Sandbox Code Playgroud)

但我不知道如何获取SQL,以便在我这样做时发生qs.delete().

它看起来更复杂,因为Django 在删除对象时" 模拟SQL约束ON DELETE CASCADE的行为 ".

(背景:在删除子类模型对象时,尝试调试由外键约束生成的IntegrityError.)

tca*_*uce 14

这很好用:

>>> from django.db import connection
>>> connection.queries[:-10]
Run Code Online (Sandbox Code Playgroud)

认为在添加查询之前发生了异常connection.queries,但它们确实存在.