2016-06-22 67 views
1

我从来没有做过这样的事情,所以我不知道什么是最好的方法解决这个问题导入模型:Django的 - 从另一个项目

我有两个Django的项目:

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

这些项目使用同一个数据库,他们有大约10款(数据库表),每部分型号的重叠:PROJECT1需要ForeignKey的从一个FO的Project2中的机型,同时也是Project2的需要ForeignKey的从PROJECT1的车型之一:

Project1:

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) 

Project2的:

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

我试图导入project1.models到项目2的models.py但它说 '未知模块'。我需要将project1导入到project2并反向,这会是一个问题吗? (循环参考?) 如果是这样,我怎么能以其他方式完成这个?

+2

它为什么需要针对不同的项目?为什么不直接制作两个可重用的应用呢? – e4c5

+0

可重复使用的应用程序,我喜欢。应用程序应该打包在一个python包中,并且可以安装,也许可以使用'pip'或者运行'python setup.py install'。 – slackmart

+0

这里https://github.com/slackmart/tastypie-sepomex一个例子,探索'setup.py'。 – slackmart

回答

0

尝试将其他项目的路径添加到您的PYTHONPATH中,然后将第一个项目的应用程序添加到settings.py安装的第二个项目的应用程序中。 不要忘记先导入应用程序,并且必须在第二个应用程序的models.py中导入第一个应用程序的模型。我不确定它是否会工作,因为我没有测试过,但你可以试试看。