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