我有一个工作的django网站,我正在尝试在其数据上运行一个独立的脚本。我正在关注this文章,但无法让它发挥作用。我尝试了两种方法:
1)
import sys, os
sys.path.append(os.path.abspath('..'))
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
from mysite.main.models import Image
#from main.models import Image #should work too
2)
import sys, os
sys.path.append(os.path.abspath('..'))
from django.core.management import setup_environ
from mysite import settings
#import settings #should work too
setup_environ(settings)
from mysite.main.models import Image
两者都给了我“AttributeError:'module'对象没有从我试图导入的模块(main.models)中引出的属性'models'。
脚本本身位于工作站点的项目根目录中,“主”应用程序已正确安装并正常工作。设置或模型应该没有问题。
答案 0 :(得分:4)
我自己也遇到了一个非常类似的错误,这个来自Django shell代码(shell.py)的代码段为我做了这个:
from django.db.models.loading import get_models
loaded_models = get_models()
将它放在模型类导入之前。
答案 1 :(得分:0)
我认为您的import
声明不起作用的原因没有任何理由。确保模块结构与import
命令匹配。模块路径应为mysite -> main -> models
。一些开发人员在项目中添加了额外的apps
模块,使路径变为mysite -> apps -> main -> models
。确保不是这种情况。
要检查,请从Django shell以及Python REPL。
执行以下操作from mysite.main.models import Image
如果这不起作用,您需要对模块结构进行故障排除。
答案 2 :(得分:0)
只需克隆您的manage.py文件即可。删除最后两行,并将代码追加到最后。奇迹般有效!例如,我现在包含以下内容,它从我的一个数据库项
输出数据#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "conf.settings_dev")
#from django.core.management import execute_from_command_line
#execute_from_command_line(sys.argv)
from events.models import Event
e = Event.objects.get(id="testID")
print e.eventTitle
我怀疑可能有更正式(和复杂)的做法,但在此期间这是一个很好的起点。