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.
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 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.
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>
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!