首頁 >資料庫 >mysql教程 >Django 外鍵可以跨越不同的資料庫嗎?

Django 外鍵可以跨越不同的資料庫嗎?

Susan Sarandon
Susan Sarandon原創
2024-11-02 03:53:30974瀏覽

Can Django Foreign Keys Span Different Databases?

Django 外鍵的跨資料庫限制

在Django 中,雖然可以為各種模型使用不同的資料庫,但跨資料庫關係受到限制。這意味著在使用路由器對模型進行分區時,外鍵關係不能跨越不同的資料庫。

考慮提供的範例:

<code class="python">class LinkModel(models.Model): # in 'urls' database
    ...

class NewsModel(models.Model):  # in default database
    ...
    link = models.ForeignKey(LinkModel)
    ...</code>

在這種情況下,嘗試分配時會出現錯誤從urls 資料庫到NewsModel 連結欄位的LinkModel 實例:

<code class="python">newsItem, created = NewsModel.objects.get_or_create( title="test" )
link = LinkModel.objects.using('urls').get( id=1 )
newsItem.link = link  # error!</code>

Django限制

Django 目前的限制阻止跨資料庫外鍵和多對多關係。這是因為使用資料庫分割時,任何此類關係都必須在單一資料庫中定義。

故障排除和解決方案

DjangoForeignKey() 類別存在一個已知問題,特別是在它的 validate() 方法中。此問題存在於版本 1.2、1.3 和 1.4rc1 中。

已提供補丁來解決此問題。應用補丁應該可以解決錯誤,並允許您將來自不同資料庫的 LinkModel 實例指派給 NewsModel 的連結欄位。

以上是Django 外鍵可以跨越不同的資料庫嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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