Django で異なるデータベース内のモデルとの外部キー関係を処理する方法は?

Barbara Streisand
リリース: 2024-10-29 19:59:02
オリジナル
160 人が閲覧しました

How to Handle Foreign Key Relationships with Models in Different Databases in Django?

外部キーとデータベース間の制約

異なるデータベースに保存された Django モデルを操作する場合、外部キーに関する一般的な問題が発生します。たとえば、次のことを考えてみましょう。

class LinkModel(models.Model): # in 'urls' データベース</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">id = models.AutoField(primary_key=True)
host_id = models.IntegerField()
path = models.CharField(max_length=255)
ログイン後にコピー

class NewsModel(models.Model): # inデフォルトのデータベース

id = models.AutoField(primary_key=True)
title = models.CharField(max_length=50)
link = models.ForeignKey(LinkModel)
ログイン後にコピー

別のデータベースからモデルに外部キーを割り当てようとすると、エラーが発生します:

< ;pre>「」を割り当てることができません: インスタンスはデータベース "default" 上にあり、値はデータベース "urls" 上にあります

これは、Django が現在、データベース間の外部キー関係をサポートしています。すべての外部キー関係は、単一のデータベース内で定義する必要があります。

制限の克服

この問題を解決するには、ルーターを作成して明示的にルーティングを行うことができます。モデルを特定のデータベースに適用するか、データベース間の関係をサポートするリレーショナル データベース管理システム (RDBMS) の使用を検討してください。現在、Django はそのような関係に対するすぐに使用できるソリューションを提供していません。

または、リンクされたチケットで説明されているように、ForeignKey() クラスにパッチを適用してこの問題に対処してみることもできます。 .

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!