Bolehkah Kunci Asing Django Menjangkau Pangkalan Data Berbeza?

Susan Sarandon
Lepaskan: 2024-11-02 03:53:30
asal
968 orang telah melayarinya

Can Django Foreign Keys Span Different Databases?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan