2017-05-26 14 views
1

pgcryto拡張機能をインストールした私のDjangoアプリケーションにPostgreSQLデータベースを使用しています。プロダクションサーバーでは、手動でユーザーを作成し、CREATE EXTENSION pgcrypto;を実行して拡張機能をインストールします。私は私のモデルがpgcrypto_expressionsからEncryptedTextFieldフィールドを使用しているので、それが失敗した./manage.py testを実行すると(それが作成されたすべてのデータベースに対して明示的に有効にする必要があるため)pgcryptoが失敗したDjangoテスト

しかし、自動的に作成されますテストデータベースは、拡張子が自然にインストールされていません。 Djangoがテストデータベースをセットアップして移行を開始するまでの間に、どのようにコードやコマンドを挿入できますか?

また、この拡張機能をPostgreSQLでグローバルに有効にする方法はありますか?

+0

エクステンションをインストールするマイグレーションを作成できます。[docs]の例を参照してください(https://docs.djangoproject.com/en/1.11/ref/contrib/postgres/operations/#creating-extension-using)。 -migrations)。 – Alasdair

+0

@Alasdair偉大な、私が必要とするもの..私は素早く見てきましたが、私はまだnoobですので、このコードをどこに置くのですか?すべてのファイルとそれを拾うでしょうか? 001_...マイグレーションファイルに挿入する必要があります(ただし、毎回上書きされます)。 – strangetimes

+0

なぜ上書きされているのかわかりません。あなたが好きなアプリのマイグレーションファイルに入ることができます。理想的には、アプリの「0001_initial」移行として追加します。 'EncryptedTextField'を使用しているマイグレーションがこのマイグレーションを[依存](https://docs.djangoproject.com/ja/1.11/topics/migrations/#dependencies)として持っている限り、それは動作するはずです。 – Alasdair

答えて

0

主に@Alasdairの助けを借りて、私のアプリケーションと残りの部分の間にあるダミーのアプリケーションをセットアップできました。ビルドサーバーが実際のアプリケーションの移行を継続して処理するように、依存関係を調整することができました。ただし、アプリケーションを移行する前に常にpgcrypto拡張をインストールしていました。

関連する問題