ホームページ >データベース >mysql チュートリアル >制限に直面した場合、Django の異なるデータベースに外部キーを実装するにはどうすればよいですか?

制限に直面した場合、Django の異なるデータベースに外部キーを実装するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-29 15:03:02946ブラウズ

How do I implement Foreign Keys across different databases in Django when facing limitations?

Django の異なるデータベース間で外部キーを実装する方法

Django では、格納されているオブジェクト間の関係を確立するために外部キーを利用することが重要です複数のデータベースにわたって。ただし、異なるデータベースのモデルが関係する場合、このプロセスに問題が生じる可能性があります。

gt;データベース間の外部キーの制限について

Django では現在、データベース間の外部キー関係を禁止しています。モデルは別のデータベースに存在します。この制限は、データベース間の関係がサポートされていないことに起因しています。データベース ルーターを使用してモデルを分割する場合は、外部キー関係を単一のデータベース内に制限する必要があります。

エラー: 互換性のないモデルの割り当て

エラーコード内で発生した問題は、「urls」データベースの LinkModel インスタンスをデフォルト データベースの NewsModel インスタンスに割り当てようとしたことに起因します。これらのモデルは異なるデータベースに属しているため、Django はこの割り当てを妨げるエラーを発生させます。

解決策: 手動外部キー割り当て

この制限を回避するには、次のようにします。カスタムの回避策を実装します。 NewsModel のリンク フィールドを介して LinkModel インスタンスを直接割り当てる代わりに、データベース内の外部キー フィールドを手動で設定します。

<code class="python">from django.db import connection

# Retrieve the LinkModel instance from the database
link = LinkModel.objects.using('urls').get(id=1)

# Execute a raw SQL query to update the foreign key value in the default database
with connection.cursor() as cursor:
    cursor.execute(
        "UPDATE news SET link_id = %s WHERE title = %s",
        [link.id, "test"]
    )</code>

このアプローチでは、デフォルトのデータベース内の外部キー値を手動で更新し、ニュース項目を効果的にリンクします。目的の LinkModel インスタンスに追加します。

以上が制限に直面した場合、Django の異なるデータベースに外部キーを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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