2010-12-29 9 views
9

DELETEのDjangoで生成されたSQLをどのように表示しますか?DjangoクエリーセットのSQLクエリーを表示

>>> qs = Entry.objects.filter(date__gt='2010-06-01') 
>>> qs.query.as_sql() 
('SELECT ...) 

をしかし、私はqs.delete()を行うときに何が起こるかのためのSQLを取得する方法がわからない:

問合せセットに SELECT操作を行って、あなたはこれを行うことができます。

オブジェクトを削除するときにDjango "emulates the behavior of the SQL constraint ON DELETE CASCADE"が表示されるので、もう少し複雑に見えます。

(背景:サブクラス化されたモデルオブジェクトを削除するときに、外部キー制約によって生成されたIntegrityErrorをデバッグしようとしている)

+1

DBエラーログを確認できます:) –

+0

IntegrityErrorを解決しましたか?私はここで同じ問題を抱えている。奇妙な事実:myobject.delete()は "manage shell"から動作しますが、ビューからは失敗します??? – Sdra

答えて

13

これは十分に機能します。

>>> from django.db import connection 
>>> connection.queries[:-10] 

は、クエリがconnection.queriesに追加された前に、例外が発生したと思ったが、彼らは確かに存在しています。

+0

あなた自身の答えを受け入れるべきです。生成されたクエリを見るのは正しい方法です。 –

1

あなたはdjango-debug-toolbarを実行しようとすると、そのようにクエリを見ることができました。

+0

このアプローチはあまり一般的ではありません(単体テスト時に発生するエラーなど)。ありがとうございます。 – tcarobruce

関連する問題