0

我有一个包含 Django 应用程序的存储库,然后是一些需要对应用程序背后的数据库执行各种操作的脚本。理想情况下,我喜欢使用 Django ORM 来编辑和更新这个数据库,因为 Django 给我留下了一些非常难看的 MYSQL 表名(my_app_sometablename)。出于一致性原因以及 ORM 存在的所有其他原因,通过 ORM 执行它也很好。

无论如何,我很难从应用程序外部正确导入 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

如果我将 repo 的路径添加到我的 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

我究竟做错了什么?我如何解决它?这让我发疯了。

4

1 回答 1

3

您可以只执行您自己的 django 管理命令来执行您需要的任务。

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

于 2013-05-03T08:18:34.280 回答