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