2016-12-30 2 views
4

私はデータをとり、それをデータベースに挿入するフォームを持っています。私がそのフォームを処理しているとき、それは私に価値のエラーを与えます、しかし、私がデータベースに行って、それを手動で挿入しようとするとうまくいきます。Djangoどのように生成されたSQLクエリを参照してください?

この状況をデバッグするために、Djangoが生成しているクエリーが失敗しているかどうかを確認する必要があります。デバッグのWebページでは、私はSQLクエリのようなものは見ませんでした。

Djangoによって生成された実際のクエリを確認するにはどうすればよいですか?

お知らせください。おかげさまで

答えて

8

ロギングの使用はどうですか?

あなたはsettings.py

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'handlers': { 
     'console': { 
      'level': 'DEBUG', 
      'class': 'logging.StreamHandler', 
     }, 
    }, 
    'loggers': { 
     'django': { 
      'handlers': ['console'], 
      'level': 'DEBUG', 
      'propagate': True, 
     }, 
    }, 
} 

でこれを追加することができ、あなたのコンソールで

import logging 

l = logging.getLogger('django.db.backends') 
l.setLevel(logging.DEBUG) 
l.addHandler(logging.StreamHandler()) 

あなたの任意のviews.pyでこれを追加することができ、あなたはSQLクエリを確認することができます。

別の方法

ゴーシェル

python manage.py shell 

>>from yourmodel import Example 
>>queryset = Example.objects.all() 
>>print(queryset.query) 

あなたは生のクエリ文字列を見ることができます。

1

PyCharmを使用すると、デバッガでアプリケーションを実行すると完全なコンテキストが得られます。ブレークポイントを設定し、あなたがエラーを持っているポイントにあなたのアプリで閲覧するなどの画面(簡単な例)を取得: enter image description here

このような方法で実行するには、ジャンゴを使用しているとき、私はトラブルシューティングを行う方法を変更しました。私は他のIDEにも同様の機能があると思われます。ベンダーからのプロセスのビデオドキュメンテーションについては、https://www.youtube.com/watch?v=QJtWxm12Eo0

と言います.Jaygroundが示唆しているように、とにかく覚えておくといいでしょう。素晴らしい提案。

+0

ありがとうAMG。私はパイチャも試して、それをやる方法を学びます。これを共有してくれてありがとう。本当にこれを感謝します。 – learner

関連する問題