2016-06-22 12 views
1

ich nie so so etwas getan habe, ich bin nicht sicher, was zur Lösung dieses Problems des besten Ansatz wäre:Django - Import-Modell aus einem anderen Projekt

Ich habe zwei Projekte Django:

root/ 
    project1/ 
      manage.py 
      project1/ 
        models.py 
        urls.py 
        ... 
    project2/ 
      manage.py 
      project2/ 
        models.py 
        urls.py 
        ... 

Diese Projekte verwenden dieselbe Datenbank, sie haben jeweils etwa 10 Modelle (Datenbanktabellen) und einige der Modelle überlappen: Project1 benötigt ForeignKey von einem der Project2-Modelle, aber auch Project2 benötigt ForeignKey von einem der Project1-Modelle:

Projekt1:

class Area_model(models.Model): 
    name = models.CharField(max_length=25) 
    url = models.CharField(max_length=25) 

class Question_model(models.Model): 
    text = models.TextField(max_length=1000) 
    date = models.CharField(max_length=40) 
    answer = models.SmallIntegerField() 
    ... 
    employee = models.ForeignKey(Employee_model) 

Projekt2:

class Employee_model(models.Model): 
    name = models.CharField(max_length=15) 
    adress = models.CharField(max_length=15) 
    area = models.ForeignKey(Area_model) 

Ich versuchte project1.models in project2 der models.py zu importieren, aber es sagt, 'unbekannter Modul'. Ich muss Projekt1 in Projekt2 importieren und umgekehrt, wird das ein Problem sein? (Kreisreferenz?) Wenn ja, wie kann ich dies auf eine andere Weise erreichen?

+2

Warum muss es für verschiedene Projekte sein? Warum machen Sie nicht einfach zwei wiederverwendbare Apps? – e4c5

+0

Wiederverwendbare Apps, das gefällt mir. Apps sollten in einem Python-Paket gepackt sein und installierbar sein, zum Beispiel mit "pip" oder "python setup.py install". – slackmart

+0

Hier https://github.com/slackmart/tastypie-sepomex ein Beispiel, erkunden Sie die 'setup.py'. – slackmart

Antwort

0

Versuchen Sie, den Pfad des anderen Projekts zu Ihrem PYTHONPATH hinzuzufügen und dann die app des ersten Projekts zu settings.py installierten Apps des zweiten Projekts hinzuzufügen. Vergessen Sie nicht, die App zuerst zu importieren, und Sie müssen die Modelle der ersten App in models.py der zweiten App importieren. Ich bin mir nicht sicher, ob es funktionieren wird, da ich es nicht getestet habe, aber Sie können es versuchen.