2011-11-07 20 views
3

SqlLite3をDjangoのDBバックエンドとして使用しようとすると、SqLiteの外部キーサポートを使用できます。 はhttp://www.sqlite.org/foreignkeys.htmlによると、あなたが実行することによって、外部キーのサポートを有効にすることができます。Django - SqLite3バックエンドで外部キーを有効にする方法

PRAGMA foreign_keys = ON; 

をこのサポートはデフォルトで無効にされ、そして最もデシベル依存テストを実行している間が望ましいであろう。 Djangoテストフレームワークの使用中に、この機能をどのように制御しますか? setUp/tearDownメソッドでバックエンド固有のコマンドを送信できますか?接続設定('DATABASE ='の設定)でこのオプションをグローバルに指定しますか?

+3

この回答はあなたが欲しいものだと思われます:http://stackoverflow.com/questions/6745763/enable-integrity-checking-with-sqlite-in-django/6835016#6835016 – Lycha

+0

@Lychaそれはまさに答えです。探していた私は既存の質問をよりよく探していたはずです。その答えを自分の質問にリンクさせるにはどうすればいいですか? –

答えて

0

ここでは部分的に回答しています:https://stackoverflow.com/a/6843142/552671

アプリでアクティブにすることができます(通常はmyapp/apps.py)。

from django.db.backends.signals import connection_created 

def activate_foreign_keys(sender, connection, **kwargs): 
    """Enable integrity constraint with sqlite.""" 
    if connection.vendor == 'sqlite': 
     cursor = connection.cursor() 
     cursor.execute('PRAGMA foreign_keys = ON;') 

class MyAppConfig(AppConfig): 
    def ready(self): 
     connection_created.connect(activate_foreign_keys) 

あなたはmyapp/__init__.pydefault_app_config = 'myapp.apps.PanelConfig'を書き、同様MyAppConfigを設定する必要があります。

注:これは、テスト用だけでなくSQLite一般に外部キーを有効にします。私はそれがあなたが望むものだと思う。

関連する問題