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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-10-29 19:59:02161ブラウズ

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

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

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

class LinkModel(models.Model): # in 'urls' データベース</p>
<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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。