私のDjangoプロジェクトには2つのデータベースがあります。 2つの外部キーを持つモデルを作成しようとする場合を除いて、すべてが完全に機能します。両方の外部キーが同じデータベースから来ていても、問題のオブジェクトをまだ保存していない場合でも、データベースルーターはロックされ、私にCannot assign "<FKObject: fk_object2>": the current database router prevents this relation.
を与えます。エラーを引き起こす複数のデータベースを持つDjangoプロジェクトに複数の外部キーを持つオブジェクトを作成
1 fk_object1 = FKObject.objects.using("database2").get(pk=1)
2 fk_object2 = FKObject.objects.using("database2").get(pk=2)
3
4 object = Object()
5 object.fk_object1 = fk_object1
6 object.fk_object2 2 = fk_object2
7 object.save(using="database2")
問題以下のコードは、私はDjangoが何らかの形で呼び出すことを仮定しているように、オブジェクトもデータベースに保存される前に、6行目で発生しObject()
それはまだ指定されていないにもかかわらず、database1
と。
誰もこれに対処する方法を知っていますか?
カスタムデータベースルータを定義しましたか? – 2ps
あなたが定義したカスタムデータベースルータは、データ変更の制限があると思います –
私は持っています。私はそこで行動を変えようとしましたが、私は運が全くありませんでした。 両方のfk_objectsを設定すると、 'db_for_write'が呼び出されますが、データを渡す方法がないようです。ヒントとして渡されたインスタンスでも、実際のインスタンス(この場合は 'fk_bject1'または' fk_object2')の代わりに 'str'型が使用されます。 – Lorenzo