2010-06-25 4 views
5

J'ai deux projets Django différents qui doivent fonctionner en parallèle et faire des choses assez différentes.partage de la table de la base de données entre deux projets django

Cependant, ils doivent partager une table de base de données commune, la table du client ..

Les deux projets contient plusieurs applications qui doivent contenir des clés étrangères mises en correspondance avec ce modèle client ..

Je ne suis pas sûr Quelle serait la meilleure approche?

Répondre

4

Malheureusement, le soutien de Django pour plusieurs bases de données ne pas support cross-database relations. Vous pouvez simuler cela sur l'un des systèmes (par exemple, faire référencer la table, mais gérer vous-même les références de clés), mais vous devez être très prudent pour documenter ce que vous faites pour vous assurer de maintenir l'intégrité référentielle dans l'application. est "feindre".

+0

Je l'aime toujours quand quelqu'un arrive 4+ ans après le Q & A et downvotes la réponse sans rien ajouter à la conversation. Note à Anonymous Coward: si vous suivez le lien dans ma réponse, vous verrez que c'est toujours vrai dans Django Dev, et ils vous le disent explicitement. Ils utilisent même des citations effrayantes autour du mot «faux». –

+3

Je ne vous ai pas downvoted mais je pense que la question pourrait être interprétée comme essayant de partager une base de données dans deux projets différents. Ce n'est pas nécessairement lié aux relations inter-bases de données. J'adore quand quelqu'un d'autre se déchaîne à propos de quelque chose sans rapport avec la question initiale. –

5

En supposant que les deux projets fonctionnent sur la même base de données, il suffit d'importer le modèle auquel vous voulez vous référer.

from first_project.some_app.models import Client, OtherSharedModel 

class SomeModelInSecondProject(models.Model): 
    client = models.ForeignKey(Client) 
0

Je ne l'ai pas testé mais une autre alternative, si vous partagez la même base de données et d'avoir les deux projets dans le même serveur, est de les fusionner en un seul projet, organiser leurs applications dans différents répertoires et vous pouvez utiliser deux fichiers de paramètres différents. S'il vous plaît voir cette question liée à cela: How to keep all my django applications in specific folder. C'est juste une approche différente qui ne vous oblige pas à référencer un projet différent (je ne suis pas sûr de savoir si c'est recommandable).

Questions connexes