首頁 >資料庫 >mysql教程 >Django中如何處理不同資料庫中模型的外鍵關係?

Django中如何處理不同資料庫中模型的外鍵關係?

Barbara Streisand
Barbara Streisand原創
2024-10-29 19:59:02229瀏覽

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

外鍵和跨資料庫限制

使用儲存在不同資料庫中的 Django 模型時,外鍵會出現一個常見問題。例如,請考慮以下內容:

class LinkModel(models.Model): # in 'urls' 資料庫<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中文網其他相關文章!

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