我从各种帖子中读到,您可以使用DJANGO_SETTINGS_MODULE = APPNAME.settings导入模型类,以便在linux命令行上使用python脚本运行。我试过跑:
DJANGO_SETTINGS_MODULE = dishtank.settings PYTHONPATH = $ HOME / pythonDirLocation python pythonScript.py
在我的python脚本中,我需要从我的一个应用程序中的model.py文件中导入一些类,以便我可以编辑数据库中的表。导入我的脚本运行所有django设置是否有任何遗漏?
答案 0 :(得分:8)
setup_environ
解决方案为deprecated since version 1.4,因此新的解决方案是遵循official doc的指导原则。
实质上,您需要按如下方式调整代码:
#!/usr/bin/python
# Deprecated way:
# from django.core.management import setup_environ
# import settings
# setup_environ(settings)
import sys
import os
# If you find a solution that does not need the two paths, please comment!
sys.path.append('$path_to_root_of_project$')
sys.path.append('$path_to_root_of_project$/$project_name$')
os.environ['DJANGO_SETTINGS_MODULE'] = '$project_name$.settings'
from django.conf import settings
# Beginning of your script...
请注意,可以(如果适用)更好的解决方案将脚本集成到custom management command中,例如./manage.py my_command
答案 1 :(得分:1)
DJANGO_SETTINGS_MODULE = APPNAME.settings
应为PROJECT.settings
。我通常会避免使用这种方法,而是更喜欢在独立脚本的顶部使用setup_environ
。
from django.core.management import setup_environ
from yourproject import settings
setup_environ(settings)
from yourproject.app.models import YourModel