使用儲存在不同資料庫中的 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中文網其他相關文章!