Maison >base de données >tutoriel mysql >Django peut-il gérer les clés étrangères dans différentes bases de données ?

Django peut-il gérer les clés étrangères dans différentes bases de données ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-31 05:28:30891parcourir

 Can Django Handle Foreign Keys Across Different Databases?

Limitations des clés étrangères entre bases de données dans Django

Les utilisateurs de Django peuvent rencontrer une erreur lors de l'accès aux clés étrangères dans différentes bases de données. Cette erreur se produit lorsqu'un modèle d'une base de données tente de référencer un modèle d'une autre base de données.

Configuration de la base de données

Dans l'exemple fourni, un LinkModel est défini dans la base de données 'urls', tandis qu'un NewsModel est défini dans la base de données par défaut.

Foreign Key Issue

L'erreur se produit lors de la tentative d'attribution d'une instance LinkModel à le champ de clé étrangère d’un objet NewsModel. Le message d'erreur indique que l'instance attribuée se trouve dans la base de données « urls » tandis que l'objet NewsModel se trouve dans la base de données « par défaut ».

Limitations de Django

Selon Selon la documentation Django, les relations entre bases de données ne sont pas prises en charge pour les clés étrangères et les relations plusieurs-à-plusieurs. Cette limitation est imposée en raison de problèmes de compatibilité et de problèmes potentiels d'intégrité des données.

Trouble

En plus de la limitation documentée, un bug dans la classe ForeignKey de Django les versions 1.2, 1.3 et 1.4rc1 peuvent également provoquer ce problème.

Solution

Une solution possible consiste à appliquer un correctif qui résout le bogue dans ForeignKey classe. Ce correctif peut être trouvé dans le système de tickets Django.

En appliquant ce correctif, il peut être possible d'établir des relations de clés étrangères entre différentes bases de données. Cependant, les utilisateurs doivent être conscients qu'il ne s'agit pas d'une fonctionnalité officiellement prise en charge et qu'elle peut introduire d'autres problèmes potentiels.

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!

Déclaration:
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