2013-05-03 40 views
0

我有一个包含Django应用程序的repo,然后是需要对应用程序后面的数据库执行各种操作的一些脚本。理想情况下,我很乐意使用Django ORM对该数据库进行编辑和更新,因为Django给我留下了一些非常难看的MYSQL表名(my_app_sometablename)。通过ORM执行此操作对于一致性原因以及ORM首先存在的所有其他原因也很好。“在Django应用程序之外导入Django模型时没有名为”Error“的模块

无论如何,我在从应用程序外部正确导入Django模型时遇到了很多困难。我试过编辑我的PYTHONPATH,并且我试过像50种不同的方式导入,并且仍然没有骰子。该结构是这样的:

repo/ 
    __init__.py 
    django_app/ 
     __init__.py 
     sub1a/ 
     __init__.py 
     models.py 
    scripts/ 
     __init__.py 
     some_script.py 

我试图做的事:

from django_app.sub1a.models import SomeModel 

其实我可以得到的那部分工作,如果我添加的路径,回购到我的Python路径,但随后当我尝试用做类似的东西我什么进口:

res = SomeModel.objects.filter(**kwargs) 

我得到:

... 
    File "/path/to/.virtualenvs/repo/lib/python2.7/site-packages/django/db/models/loading.py", line 64, in _populate 
    self.load_app(app_name, True) 
    File "/path/to/.virtualenvs/analyticsv2/lib/python2.7/site-packages/django/db/models/loading.py", line 86, in load_app 
    app_module = import_module(app_name) 
    File "/path/to/.virtualenvs/analyticsv2/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
ImportError: No module named sub1a 

我在做什么错?我如何解决它?这让我疯狂。

回答

3

你可以做你自己的django管理员命令来执行你需要的任务。

https://docs.djangoproject.com/en/dev/howto/custom-management-commands/#howto-custom-management-commands

+0

是的,但某些脚本真的什么都没有做的应用程序,也有很多人。强迫所有人通过Django管理运行似乎凌乱。我们已经通过django管理员做了一些事情,但是我希望分开保存和运行这些脚本。 – Eli 2013-05-03 08:58:57

+2

@Eli这与管理网站无关,它们是通过'manage.py'运行的独立管理脚本。 – 2013-05-03 09:28:14

+0

@DanielRoseman我知道。我仍然不想运行我需要的每个脚本,通过manage.py访问django数据库。我想要的东西与应用程序直接相关,没有别的。 – Eli 2013-05-03 09:34:58

相关问题