外部スクリプトを使用してデータベースを事前設定したいと考えています。スクリプトは次のとおりです
# -*- coding:utf-8-*-
import os, sys
from random import choice
PROJECT_DIR = os.path.abspath(os.path.join(os.path.abspath(__file__),'..','..'))
sys.path.append(PROJECT_DIR)
os.environ['DJANGO_SETTINGS_MODULE']='geoedu.settings'
from school.models import School
from student.models import Student
if __name__=='__main__':
student = Student(first_name=choice(first_names_males), last_name=choice(last_names_males),
father_name=choice(first_names_males), mother_name=choice(first_names_females),
mobile=choice(mobiles), telephone=choice(telephones))
student.save()
ここで選択する引数は、名前と電話番号のリストです。実行すると、次のエラーが表示されます
django.db.utils.DatabaseError: no such table: student_student
ディレクトリツリー
geoedu
├── geoedu
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── urls.py
│ ├── urls.pyc
│ ├── wsgi.py
│ └── wsgi.pyc
├── geoedu.db
├── geoedu.sublime-project
├── geoedu.sublime-workspace
├── manage.py
├── school
│ ├── admin.py
│ ├── admin.pyc
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── models.py
│ ├── models.pyc
│ ├── tests.py
│ └── views.py
├── scripts
│ └── populate.py
└── student
├── admin.py
├── admin.pyc
├── __init__.py
├── __init__.pyc
├── models.py
├── models.pyc
├── tests.py
└── views.py
それが行うことは、スクリプトフォルダー内に新しい geoedu.db を作成し、それを使用することです (これは空であり、student_student テーブルはもちろんありません)。
なぜそれが起こっているのですか?PROJECT_DIR は正しいもの (印刷されたもの) であり、すべての上にある geoddu であるツリーのルートです。
編集: 新しい学生を作成すると、新しい geoedu.db が作成されます。これらの行をコメントアウトすると、geoedu.db が作成されません。