1

MySQL では、異なるデータベース内のテーブル間に外部キー関係を設定できます。この関係をそれぞれの Django モデルに変換するのは難しいと思います。

データベース間の関係がサポートされていないことをドキュメントで読みましたが、プロパティ/関数をオーバーライドして、テーブルをDB.tableではなくとして識別できるようにすることはできますtableか?

たとえば、いくつかのin で参照されるテーブルtable1inがあります。Django は (失敗して) を検索しようとし、例外を発生させます。DB1table2DB2table1DB2DatabaseError

Variable    Value
charset     'latin1'
exc         <class '_mysql_exceptions.ProgrammingError'>
self        <MySQLdb.cursors.Cursor object at 0x2a87ed0>
args        (195,)
db          <weakproxy at 0x2a95208 to Connection at 0xdad0>
value       ProgrammingError(1146, "Table 'DB2.table1' doesn't exist")
query       'SELECT (1) AS `a` FROM `table1` WHERE `table1`.`ndx` = 195  LIMIT 1'

saveメソッドを除いて、ほとんどすべてが機能します。正しい方向へのプッシュは大いに役立ちます!

4

2 に答える 2

0

異なる mysql DB の 2 つのテーブル間で機能する関係を取得するために何もできないようです。これは仕様によるものです。チケット17875にはいくつかの情報があります。これを回避するコードを書く必要があります。

于 2012-12-25T05:57:27.610 に答える
0

データベースの手動選択が必要でした。

あなたが与えたエラーを見ると、次のようにする必要があります:

qs = table1.objects.using('DB1 ').filter(pk=id)
# just an example

この例では、Django に を検索table1するように明示的に指示していますDB1

于 2012-12-17T14:49:18.673 に答える