首頁 >資料庫 >mysql教程 >當遇到限制時,如何在 Django 中跨不同資料庫實現外鍵?

當遇到限制時,如何在 Django 中跨不同資料庫實現外鍵?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-29 15:03:02996瀏覽

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

如何在Django 中實作跨不同資料庫的外鍵

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn