Django アプリの 1 つの「models.py」にあるサーバー起動コードがいくつかあります。サーバーの起動時にそのコードを実行する必要があります。
問題は、コードが SQL クエリを発行し、実行できないことですsyncdb
(psycopg2
トランザクションが中断され、テーブルが作成されません)。
コードをミドルウェアに入れて上げるのdjango.core.exceptions.MiddlewareNotUsed
は最適ではありません.Djangoシェルでも効果が欲しいからです(また、初期化コードをミドルウェアに入れるのは正しく聞こえません.)それをする最初の要求。最初の顧客が私の Web サイトを訪れたときではなく、サーバーの起動時にコードを実行したいと考えています。
サーバーの起動シグナルは Django ではまだ実装されていないため、これはオプションではありません。
したがって、私は何とかしたいと思います:
- Django が syncdb を実行しているかどうかを確認するため、クエリは実行しません。
- または、代わりに、対応するテーブルがあることを確認し、そうでない場合も、クエリを実行しないでください
上記の 2 つのオプションのいずれも、どのドキュメントにも見つかりませんでした。それ、どうやったら出来るの?または、私がやりたいことを行うためのより良い(つまり、正気の)方法はありますか?