Rumah  >  Artikel  >  pangkalan data  >  Bagaimana Mengendalikan Hubungan Utama Asing dengan Model dalam Pangkalan Data Berbeza dalam Django?

Bagaimana Mengendalikan Hubungan Utama Asing dengan Model dalam Pangkalan Data Berbeza dalam Django?

Barbara Streisand
Barbara Streisandasal
2024-10-29 19:59:02161semak imbas

How to Handle Foreign Key Relationships with Models in Different Databases in Django?

Kunci Asing dan Kekangan Merentas Pangkalan Data

Apabila bekerja dengan model Django yang disimpan dalam pangkalan data yang berbeza, isu biasa timbul dengan kunci asing . Sebagai contoh, pertimbangkan perkara berikut:

kelas LinkModel(models.Model): # dalam pangkalan data 'url'

id = models.AutoField(primary_key=True)
host_id = models.IntegerField()
path = models.CharField(max_length=255)

class NewsModel(models.Model): # dalam pangkalan data lalai

id = models.AutoField(primary_key=True)
title = models.CharField(max_length=50)
link = models.ForeignKey(LinkModel)

Apabila cuba memberikan kunci asing kepada model daripada pangkalan data lain, ralat akan ditimbulkan:

< ;pra>Tidak boleh menetapkan "": contoh adalah pada pangkalan data "lalai", nilai berada pada pangkalan data "url"

Ini berlaku kerana Django tidak kini menyokong perhubungan utama asing merentas pangkalan data. Semua perhubungan utama asing mesti ditakrifkan dalam satu pangkalan data.

Mengatasi Had

Untuk menyelesaikan isu ini, anda boleh sama ada mencipta penghala untuk mengarahkan anda secara eksplisit model kepada pangkalan data tertentu atau pertimbangkan untuk menggunakan sistem pengurusan pangkalan data hubungan (RDBMS) yang menyokong perhubungan silang pangkalan data. Pada masa ini, Django tidak menyediakan penyelesaian luar kotak untuk perhubungan sedemikian.

Sebagai alternatif, anda boleh cuba menggunakan tampung pada kelas ForeignKey() untuk menangani isu ini, seperti yang diterangkan dalam tiket yang dipautkan .

Atas ialah kandungan terperinci Bagaimana Mengendalikan Hubungan Utama Asing dengan Model dalam Pangkalan Data Berbeza dalam Django?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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