如何在Python / Django中导入模型

时间:2018-01-31 06:35:15

标签: python django

我的项目结构如下:

my_proj
 ---calculation
 ---cardata
 ---master
 ---my_proj
     --- __init.py__
     --- admin.py
     --- settings.py
     --- url.py
     --- update_db_from_ftp.py  ///// This is my custom file

update_db_from_ftp.py 中我想从ftp下载一个csv文件,并每天用cron更新一次数据库(如有必要)。

但问题是我无法导入我想要更新的模型。我想要更新的模型位于master文件中的models.py文件夹中。

我尝试按如下方式导入模型:

from master.models import ModelName

但我收到的错误如下:

Traceback (most recent call last):
  File "update_db_from_ftp.py", line 6, in <module>
    from master.models import ModelName
ImportError: No module named master.models

但是我在cardatacalculation文件夹中使用了相同的模型,并且我在update_db_from_ftp.py文件中尝试导入它的方式相同,但它可以正常工作。

知道怎么解决吗?

UDPATE

主文件夹的结构如下:

enter image description here

1 个答案:

答案 0 :(得分:0)

在任意外部脚本中使用django代码时,需要做两件事:

  1. 应该设置Django(当你运行django shell时会发生什么)。
  2. 根项目应该在python路径中(而不是具有相同名称的内部文件夹)。
  3. 下面是示例代码,无论脚本的位置如何都会起作用(尽管如果脚本不是一次性的,最好将其添加为管理命令):

    import django
    import os
    import sys
    
    sys.path.append("/path/to/my-proj/")
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'my-proj.settings')
    django.setup()
    
    from master.models import ModelName
    
    if __name__ == "__main__":
        print(ModelName.objects.all())