一尘不染

Django独立脚本

django

我试图从另一个python脚本访问我的Django(v1.10)应用程序数据库,但遇到了一些麻烦。

这是我的文件和文件夹结构:

store
 store
   __init.py__
   settings.py
   urls.py
   wsgi.py
 store_app
   __init.py__
   admin.py
   apps.py
   models.py
   ...
 db.sqlite3
 manage.py

other_script.py

根据Django的文档,我other_script.py看起来像这样:

import django
from django.conf import settings

settings.configure(DEBUG=True)
django.setup()

from store.store_app.models import MyModel

但它会生成运行时错误:

RunTimeError: Model class store.store_app.models.MyModel doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

我应该注意,我的INSTALLED_APPS列表包含store_app了它的最后一个元素。

相反,如果我尝试通过这样的配置:

import django
from django.conf import settings
from store.store_app.apps import StoreAppConfig

settings.configure(StoreAppConfig, DEBUG=True)
django.setup()

from store.store_app.models import MyModel

我得到:

AttributeError: type object 'StoreAppConfig has no attribute  'LOGGING_CONFIG'.

如果我进行编辑settings.py和添加,LOGGING_CONFIG=None则会遇到另一个有关另一个缺少属性的错误,依此类推。

任何建议将不胜感激。


阅读 347

收藏
2020-03-31

共1个答案

一尘不染

尝试这个

import sys, os, django
sys.path.append("/path/to/store") #here store is root folder(means parent).
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "store.settings")
django.setup()

from store_app.models import MyModel

你可以在系统中的任何位置使用此脚本。

2020-03-31