2010-06-25 11 views
5

Tengo dos proyectos diferentes de Django que deben ejecutarse en paralelo y hacer cosas bastante diferentes.compartiendo la tabla de la base de datos entre dos proyectos django

Sin embargo tienen que compartir una mesa base de datos común, la mesa del cliente ..

Ambos proyectos contiene múltiples aplicaciones que necesita para contener las claves externas asignadas a ese modelo de cliente ..

no estoy seguro cuál sería el mejor enfoque ...

Respuesta

4

Por desgracia, el apoyo de Django para múltiples bases de datos hace no apoyo cross-database relations. Puede falsificar esto en uno de los sistemas (es decir, hacer referencia a la tabla, pero manejar la referencia de tecla usted mismo), pero deberá tener mucho cuidado de documentar lo que está haciendo para asegurarse de mantener la integridad referencial en la aplicación que está 'fingiendo'.

+0

Siempre me encanta cuando alguien viene más de 4 años después de la sesión de preguntas y respuestas y rechaza la respuesta sin agregar nada a la conversación. Nota para Cobarde Anónimo: si sigues el enlace en mi respuesta, encontrarás que esto sigue siendo cierto en Django Dev, y te lo dicen de manera explícita. Incluso usan citas de miedo alrededor de la palabra 'falso'. –

+3

No te he votado negativamente, pero creo que la pregunta podría interpretarse como intentar compartir una base de datos en dos proyectos diferentes. No está necesariamente relacionado con las relaciones entre bases de datos. Me encanta cuando alguien discute sobre algo que no está relacionado con la pregunta original. –

5

Suponiendo que ambos proyectos están trabajando en el mismo db, simplemente importe el modelo al que desea hacer referencia.

from first_project.some_app.models import Client, OtherSharedModel 

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

No lo he probado, pero otra alternativa, si está compartiendo el mismo db y teniendo ambos proyectos en el mismo servidor, es simplemente fusionarlos en un proyecto, organizar sus aplicaciones en diferentes directorios y si debe puedes usar dos archivos de configuración diferentes. Consulte esta pregunta relacionada con eso: How to keep all my django applications in specific folder. Es solo un enfoque diferente que no requiere que hagas referencia a un proyecto diferente (no estoy seguro de cuán recomendable es).

Cuestiones relacionadas