Had Merentas Pangkalan Data dengan Kunci Asing Django
Dalam Django, sementara anda boleh menggunakan pangkalan data yang berbeza untuk pelbagai model, perhubungan silang pangkalan data adalah terhad. Ini bermakna perhubungan kunci asing tidak boleh menjangkau pangkalan data yang berbeza apabila menggunakan penghala untuk membahagikan model.
Pertimbangkan contoh yang diberikan:
<code class="python">class LinkModel(models.Model): # in 'urls' database ... class NewsModel(models.Model): # in default database ... link = models.ForeignKey(LinkModel) ...</code>
Dalam senario ini, ralat akan timbul apabila cuba menetapkan contoh LinkModel daripada pangkalan data url ke medan pautan NewsModel:
<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>
Had Django
Had semasa Django menghalang kunci asing silang pangkalan data dan banyak ke- banyak perhubungan. Ini kerana sebarang perhubungan sedemikian mesti ditakrifkan dalam satu pangkalan data apabila menggunakan pembahagian pangkalan data.
Selesaikan Masalah dan Penyelesaian
Terdapat isu yang diketahui dengan kelas Django ForeignKey() , khususnya dalam kaedah validate(). Isu ini wujud dalam versi 1.2, 1.3 dan 1.4rc1.
Tampung tersedia untuk menyelesaikan isu ini. Menggunakan tampalan sepatutnya menimbulkan ralat dan membolehkan anda menetapkan tika LinkModel daripada pangkalan data berbeza kepada medan pautan NewsModel.
Atas ialah kandungan terperinci Bolehkah Kunci Asing Django Menjangkau Pangkalan Data Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!