Heim > Datenbank > MySQL-Tutorial > Wie gehe ich mit Fremdschlüsselbeziehungen zu Modellen in verschiedenen Datenbanken in Django um?

Wie gehe ich mit Fremdschlüsselbeziehungen zu Modellen in verschiedenen Datenbanken in Django um?

Barbara Streisand
Freigeben: 2024-10-29 19:59:02
Original
227 Leute haben es durchsucht

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

Fremdschlüssel- und datenbankübergreifende Einschränkungen

Beim Arbeiten mit Django-Modellen, die in verschiedenen Datenbanken gespeichert sind, tritt häufig ein Problem mit Fremdschlüsseln auf . Betrachten Sie beispielsweise Folgendes:

class LinkModel(models.Model): # in 'urls'-Datenbank</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">id = models.AutoField(primary_key=True)
host_id = models.IntegerField()
path = models.CharField(max_length=255)
Nach dem Login kopieren

class NewsModel(models.Model): # in Standarddatenbank

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

Beim Versuch, einem Modell aus einer anderen Datenbank einen Fremdschlüssel zuzuweisen, wird ein Fehler ausgegeben:

< ;pre>„“ kann nicht zugewiesen werden: Instanz befindet sich in der Datenbank „default“, Wert befindet sich in der Datenbank „urls“

Dies geschieht, weil Django dies nicht tut Unterstützt derzeit datenbankübergreifende Fremdschlüsselbeziehungen. Alle Fremdschlüsselbeziehungen müssen in einer einzigen Datenbank definiert werden.

Überwindung der Einschränkung

Um dieses Problem zu beheben, können Sie entweder einen Router erstellen, um Ihre Fremdschlüsselbeziehungen explizit weiterzuleiten Modelle in bestimmte Datenbanken integrieren oder die Verwendung eines relationalen Datenbankverwaltungssystems (RDBMS) in Betracht ziehen, das datenbankübergreifende Beziehungen unterstützt. Derzeit bietet Django keine Standardlösung für solche Beziehungen an.

Alternativ können Sie versuchen, einen Patch auf die ForeignKey()-Klasse anzuwenden, um dieses Problem zu beheben, wie im verlinkten Ticket beschrieben .

Das obige ist der detaillierte Inhalt vonWie gehe ich mit Fremdschlüsselbeziehungen zu Modellen in verschiedenen Datenbanken in Django um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage