Maison > base de données > tutoriel mysql > le corps du texte

Comment gérer les relations de clés étrangères avec des modèles dans différentes bases de données dans Django ?

Barbara Streisand
Libérer: 2024-10-29 19:59:02
original
160 Les gens l'ont consulté

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

Contraintes de clés étrangères et de bases de données croisées

Lorsque vous travaillez avec des modèles Django stockés dans différentes bases de données, un problème courant survient avec les clés étrangères . Par exemple, considérons ce qui suit :

class LinkModel(models.Model): # dans la base de données 'urls'</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)
Copier après la connexion

class NewsModel(models.Model): # dans base de données par défaut

id = models.AutoField(primary_key=True)
title = models.CharField(max_length=50)
link = models.ForeignKey(LinkModel)
Copier après la connexion

Lors de la tentative d'attribution d'une clé étrangère à un modèle à partir d'une base de données différente, une erreur sera générée :

< ;pre>Impossible d'attribuer "": l'instance est sur la base de données "par défaut", la valeur est sur la base de données "urls"

Cela se produit car Django ne le fait pas prend actuellement en charge les relations de clés étrangères entre bases de données. Toutes les relations de clé étrangère doivent être définies dans une seule base de données.

Surmonter la limitation

Pour résoudre ce problème, vous pouvez soit créer un routeur pour acheminer explicitement votre modèles vers des bases de données spécifiques ou envisagez d'utiliser un système de gestion de bases de données relationnelles (SGBDR) qui prend en charge les relations entre bases de données. Actuellement, Django ne fournit pas de solution prête à l'emploi pour de telles relations.

Vous pouvez également essayer d'appliquer un correctif à la classe ForeignKey() pour résoudre ce problème, comme décrit dans le ticket lié. .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!