2010-06-25 16 views
5

Mam dwa różne projekty Django, które mają działać równolegle i robić całkiem różne rzeczy.udostępnianie tabeli bazy danych między dwoma projektami django

Jednak muszą one mają wspólną tabelę bazy danych, tabela klienta ..

Oba projekty zawiera wiele aplikacji, które musi zawierać klucze obce zmapowane do tego modelu Client ..

nie jestem pewien jaka byłaby najlepsza metoda.

Odpowiedz

4

Niestety, wsparcie Django dla wielu baz danych nie nie wsparcia cross-database relations. Możesz sfałszować to na jednym z systemów (np. Mieć odniesienie do tabeli, ale samemu obsłużyć klucz), ale musisz bardzo uważać, aby udokumentować, co robisz, aby zachować integralność referencyjną w aplikacji, która "udaje" to.

+0

Zawsze mi się podoba, gdy ktoś przychodzi po 4 i więcej latach po pytaniach i odpowiedziach i bez odpowiedzi w ogóle dodaje coś do rozmowy. Uwaga dla Anonimowego Tchórza: jeśli klikniesz link w mojej odpowiedzi, przekonasz się, że to nadal jest prawdą w Django Dev. Używają nawet przerażających cytatów wokół słowa "fałszywy". –

+3

Nie wycofałem się, ale sądzę, że pytanie to można interpretować jako próbę udostępnienia jednej bazy danych w dwóch różnych projektach. Nie musi być związany z relacjami między bazami danych. Uwielbiam to, gdy ktoś inny mówi o czymś niezwiązanym z pierwotnym pytaniem. –

5

Zakładając, że oba projekty działają na tej samej bazie danych, po prostu zaimportuj model, do którego chcesz się odwołać.

from first_project.some_app.models import Client, OtherSharedModel 

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

Nie testowałem tego, ale inną alternatywą, jeśli dzielisz tę samą bazę danych i posiadasz oba projekty na tym samym serwerze, jest po prostu scalenie ich w jeden projekt, uporządkowanie ich aplikacji w różnych katalogach i jeśli musisz możesz użyć dwóch różnych plików ustawień. Zobacz pytanie związane z tym: How to keep all my django applications in specific folder. To tylko inne podejście, które nie wymaga odwoływania się do innego projektu (nie jestem pewien, jak to jest zalecane).

Powiązane problemy