Heim  >  Artikel  >  Datenbank  >  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
Barbara StreisandOriginal
2024-10-29 19:59:02161Durchsuche

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>
<pre class="brush:php;toolbar:false">id = models.AutoField(primary_key=True)
host_id = models.IntegerField()
path = models.CharField(max_length=255)

class NewsModel(models.Model): # in Standarddatenbank

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

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!

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