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