Django:用脚本操作数据库;导入错误

时间:2018-03-25 17:59:47

标签: python django django-models

我正在浏览Django教程并希望尝试使用python脚本进行数据库操作但遇到问题

我的剧本:

from polls.models import Question, Choice
from django.utils import timezone
import numpy as np
#Questions
nquestions=3
q=np.empty([nquestions, 10], dtype=object)
qtext=q
qtext[0]="What's up?"
qtext[1]="What's new?"
qtext[2]="What's old?"

#Choices
q[0,1]="Not much"
q[0,2]="The sky"
q[1,1]="This question"
q[1,2]="This answer"
q[2,1]="No more originality"
q[2,2]="xxxxxxx"


#Check if exists and apply
for i in range(0, len(q)):
    q[i,0]=Question(question_text=qtext[i], pub_date=timezone.now())
    if Question.objects.filter(question_text=qtext[i]).exists():
        pass
    else:
        q[i,0].question_text=qtext[i]
        q[i,0].save()
        alen=len(q[i][q[i] != np.array(None)])
        for ii in range(0, alen-1):
            q[i,0].choice_set.create(choice_text=q[i,ii+1], votes=0)

我收到错误django.core.exceptions.appregistrynotready apps尚未加载。我正在从终端运行脚本,它位于包含polls文件夹的文件夹中(在modules.py上一级,我正在尝试导入)。

如果我首先在terminal:python manage.py shell中运行,那么写我的脚本的内容是有效的。有没有办法让我运行脚本来通过Djangos API操作数据库,还是我必须手动输入信息或发送请求?

1 个答案:

答案 0 :(得分:2)

您需要设置DJANGO_SETTINGS_MODULE环境变量并致电django.setup(),然后才能导入模型。

import os
import django
# Change mysite if your project has a different name 
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
django.setup()

from polls.models import Question, Choice
...

有关详细信息,请参阅the docs

另一种选择是写一个custom management command。当您使用manage.py来运行管理命令时,您不必设置DJANGO_SETTINGS_MODULE或致电django.setup()