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