首页> 疑难解答

如何正确导入django项目设置以与应用程序的ORM交互?

withpy 2021-06-17

简介我正在尝试从外部脚本与django app ORM进行交互,但是当我(Pdb)从应用程序中从django.conf导入设置(Pdb)settings.configure(myapp.settings)(Pdb)导入myapp.settings(Pdb)时。 ..

我试图从外部脚本与django应用程序ORM进行交互,但是当我

(Pdb) import myapp.settings
(Pdb) from django.conf import settings
(Pdb) settings.configure(myapp.settings)
(Pdb) from app.models import MyModel
*** AttributeError: 'module' object has no attribute 'DEFAULT_INDEX_TABLESPACE'

如何正确导入django app设置,在这种情况下查询ORM数据?

1
投票

在运行程序之前,请设置PYTHONPATH变量以包含您的django项目目录。

假设您的django项目位于:/ home / anon / djangoproject

然后,在运行您的应用程序之前,请确保您具有:

export PYTHONPATH=$PYTHONPATH:/home/anon/mydjangoproject

这些示例适用于Linux shell,请为任何其他操作系统执行类似的系统环境变量设置。


1
投票

它解决了

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
    django.setup()

之后,我导入了ORM并且模型对象正常工作!


0
投票

在尝试在Django 1.10.0上构建后台调度cron作业时,我遇到了同样的问题

我通过在独立脚本的顶部声明以下内容来修复此问题

import os, django
os.environ.setdefault("DJANGO_SETTINGS_MODULE","myapp.settings")
django.setup()
#continue with the rest of your code

希望这能解决问题。它对我有用。


0
投票

这是项目级连接

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')

application = get_wsgi_application()

from app.model import ModelName
orm = ModelName.objects.all()
print(orm)

接下来你可以导入模型并执行django orm,它在django 1.11.6中测试过

谢谢.....!

相关文章