2011-08-15 68 views
2

我從各種文章中讀到,您可以使用DJANGO_SETTINGS_MODULE = APPNAME.settings導入模型類以在Linux命令行上使用python腳本運行。我試圖運行:DJANGO_SETTINGS_MODULE不導入我的模型類

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

在我的Python腳本,我需要從我的model.py文件導入我的應用程序的一個部分類,以便我可以在我的數據庫中編輯表格。有什麼我缺少導入所有我的Django設置與我的腳本運行?

回答

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