Django の外部キーは異なるデータベースにまたがることはできますか?

Susan Sarandon
リリース: 2024-11-02 03:53:30
オリジナル
968 人が閲覧しました

Can Django Foreign Keys Span Different Databases?

Django 外部キーによるデータベース間の制限

Django では、さまざまなモデルに異なるデータベースを使用できますが、データベース間の関係制限されています。これは、ルーターを使用してモデルを分割する場合、外部キー関係が異なるデータベースにまたがることはできないことを意味します。

次の例を考えてみましょう。

<code class="python">class LinkModel(models.Model): # in 'urls' database
    ...

class NewsModel(models.Model):  # in default database
    ...
    link = models.ForeignKey(LinkModel)
    ...</code>
ログイン後にコピー

このシナリオでは、割り当てを試行するとエラーが発生します。 URL データベースから NewsModel のリンク フィールドへの LinkModel インスタンス:

<code class="python">newsItem, created = NewsModel.objects.get_or_create( title="test" )
link = LinkModel.objects.using('urls').get( id=1 )
newsItem.link = link  # error!</code>
ログイン後にコピー

Django の制限

Django の現在の制限により、データベース間の外部キーと多対多くの関係。これは、データベース パーティショニングを使用する場合、そのような関係は単一のデータベース内で定義する必要があるためです。

トラブルシューティングと解決策

Django のForeignKey() クラスには既知の問題があります。 、具体的には validate() メソッド内です。この問題はバージョン 1.2、1.3、および 1.4rc1 に存在します。

この問題を解決するパッチが利用可能です。パッチを適用するとエラーが解決され、別のデータベースから LinkModel インスタンスを NewsModel のリンク フィールドに割り当てることができるようになります。

以上がDjango の外部キーは異なるデータベースにまたがることはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート