我正在浏览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操作数据库,还是我必须手动输入信息或发送请求?
答案 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()
。