DJANGO_SETTINGS_MODULE没有导入我的模型类

时间:2011-08-15 20:50:15

标签: python django

我从各种帖子中读到,您可以使用DJANGO_SETTINGS_MODULE = APPNAME.settings导入模型类,以便在linux命令行上使用python脚本运行。我试过跑:

DJANGO_SETTINGS_MODULE = dishtank.settings PYTHONPATH = $ HOME / pythonDirLocation python pythonScript.py

在我的python脚本中,我需要从我的一个应用程序中的model.py文件中导入一些类,以便我可以编辑数据库中的表。导入我的脚本运行所有django设置是否有任何遗漏?

2 个答案:

答案 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