Rumah > pangkalan data > tutorial mysql > Bagaimanakah cara saya melaksanakan Kunci Asing merentas pangkalan data yang berbeza dalam Django apabila menghadapi batasan?

Bagaimanakah cara saya melaksanakan Kunci Asing merentas pangkalan data yang berbeza dalam Django apabila menghadapi batasan?

Mary-Kate Olsen
Lepaskan: 2024-10-29 15:03:02
asal
945 orang telah melayarinya

How do I implement Foreign Keys across different databases in Django when facing limitations?

Cara Melaksanakan Kunci Asing Merentasi Pangkalan Data Berbeza dalam Django

Dalam Django, menggunakan kunci asing adalah penting untuk mewujudkan hubungan antara objek yang disimpan merentasi pelbagai pangkalan data. Walau bagaimanapun, proses ini boleh memberikan cabaran apabila model untuk pangkalan data yang berbeza terlibat.

Memahami Had Kunci Asing Merentas Pangkalan Data

Django pada masa ini melarang hubungan utama asing antara model yang berada dalam pangkalan data berasingan. Sekatan ini berpunca daripada ketiadaan sokongan untuk perhubungan silang pangkalan data. Jika anda menggunakan penghala pangkalan data kepada model partition, perhubungan kunci asing mesti dihadkan kepada dalam satu pangkalan data.

Ralat: Menetapkan Model Tidak Serasi

Ralat yang ditemui dalam kod anda berpunca daripada percubaan untuk menetapkan contoh LinkModel daripada pangkalan data "url" kepada tika NewsModel daripada pangkalan data lalai. Memandangkan model ini tergolong dalam pangkalan data yang berbeza, Django menimbulkan ralat yang menghalang tugasan ini.

Penyelesaian: Tugasan Kunci Asing Manual

Untuk memintas pengehadan ini, anda boleh melaksanakan penyelesaian tersuai. Daripada memberikan contoh LinkModel secara langsung melalui medan pautan NewsModel, tetapkan medan kunci asing secara manual dalam pangkalan data:

<code class="python">from django.db import connection

# Retrieve the LinkModel instance from the database
link = LinkModel.objects.using('urls').get(id=1)

# Execute a raw SQL query to update the foreign key value in the default database
with connection.cursor() as cursor:
    cursor.execute(
        "UPDATE news SET link_id = %s WHERE title = %s",
        [link.id, "test"]
    )</code>
Salin selepas log masuk

Pendekatan ini mengemas kini nilai kunci asing secara manual dalam pangkalan data lalai, memautkan item berita dengan berkesan ke contoh LinkModel yang dikehendaki.

Atas ialah kandungan terperinci Bagaimanakah cara saya melaksanakan Kunci Asing merentas pangkalan data yang berbeza dalam Django apabila menghadapi batasan?. 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