Maison >base de données >tutoriel mysql >Comment gérer les relations de clés étrangères avec des modèles dans différentes bases de données dans Django ?
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> <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): # dans base de données par défaut
id = models.AutoField(primary_key=True) title = models.CharField(max_length=50) link = models.ForeignKey(LinkModel)
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 "
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.
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!