2010-12-29 3 views
9

장고가 생성 한 SQL을 DELETE에 어떻게 표시합니까?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()는 "셸 관리"에서 작동하지만보기에서 실패 ??? – Sdra

답변

13

이 충분히 잘 작동합니다.

+0

당신은 당신의 대답을 받아 들여야합니다. 생성 된 쿼리를 보는 것이 올바른 방법입니다. –

1

당신은 django-debug-toolbar을 실행하려고하고 그런 식으로 쿼리를 볼 수 있었다.

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

는 쿼리 connection.queries에 추가되기 전에 예외가 발생 생각하지만, 실제로 존재 :

+0

이 접근법은 매우 일반적이지는 않지만 (단위 테스트 중에 발생하는 오류를 말함) 감사합니다. – tcarobruce