DjangoのQuerySetが実行するSQLの確認方法💡
.queryを利用してprint()で出力
これが一番手軽?
ただし、公式リファレンスを見る限りパブリックな属性ではなさそう
QuerySet の query パラメータは、特殊なクエリのサブクラスが内部のクエリ状態を再構築できるようにするために存在します。このパラメータの値はクエリの状態の不透明な表現であり、パブリックAPIの一部ではありません。
実際にコードを見てみると、以下のようになっている
code:Python
@property
def query(self):
if self._deferred_filter:
negate, args, kwargs = self._deferred_filter
self._filter_or_exclude_inplace(negate, args, kwargs)
self._deferred_filter = None
return self._query
connection.queriesで確認する方法もあるらしい
django-debug-toolbarを利用する
ここではLOGGINGが紹介されてい
LOGGINGも良いらしい
ただし、DRFだとできないみたい
django-silkも気になっている
結構記事も出てくる
一番まとめられていそうだったのがakiyokoさんのブログ