向django模型提供初始数据

时间:2013-09-07 20:07:52

标签: django django-models

如何使用初始数据对表进行popolate。 ?? 我读过这个: [1] https://docs.djangoproject.com/en/dev/howto/initial-data/#providing-initial-sql-data

direc tree:

    |-- manage.py
    |-- mydb
    |-- QAapp
    |   |-- __init__.py
    |   |-- __init__.pyc
    |   |-- migrations
    |   |   |-- 0001_initial.py
    |   |   |-- 0001_initial.pyc
    |   |   |-- 0002_auto__add_report__add_questioncontainer.py
    |   |   |-- 0002_auto__add_report__add_questioncontainer.pyc
    |   |   |-- __init__.py
    |   |   `-- __init__.pyc
    |   |-- models.py
    |   |-- models.pyc
    |   |-- sql
    |   |   |-- questioncontainer.sql
    |   |   `-- scrap.py
    |   |-- tests.py
    |   `-- views.py
    `-- QAsite
        |-- __init__.py
        |-- __init__.pyc
        |-- settings.py
        |-- settings.pyc
        |-- urls.py
        `-- wsgi.py

模型文件:

from django.db import models
class QuestionContainer(models.Model):
    topic           = models.CharField(max_length=100)
    subtopic        = models.CharField(max_length=100)
    question        = models.TextField()
    options         = models.TextField()
    correct_answer  = models.CharField(max_length=50)
    total_attempts  = models.IntegerField()
    solved          = models.IntegerField()
    level           = models.IntegerField()

class Report(models.Model):
    name                = models.CharField(max_length=200)
    email               = models.EmailField()
    content             = models.TextField()
    QuestionContainer   = models.ForeignKey(QuestionContainer)

questioncontainer.sql包含

INSERT INTO QAapp_QuestionContainer (topic,subtopic,question,options,correct_answer,total_attempts,solved,level) VALUES ('general-aptitude','age-problems','The Average age of a class of 22 students in 21 years. The average increases by 1 when the teachers age also included. What is the age of the teacher?','A. 44 C. 41 B. 43 D. 40','[A]',0,0,0);

问题是:我是否需要在manage.py中添加一些东西[或]从shell [或]执行一些命令,以便用那些插入查询来填充表格?

我试过了:
python manage.py sqlall
python manage.py syncdb

1 个答案:

答案 0 :(得分:0)

是的,你需要运行:

python manage.py syncdb

将创建所有表,然后运行您的sql脚本..

<强>更新

由于你使用南方,似乎南方控制syncdb并提供迁移,而不是模仿syncdb并在创建表后加载sql文件。我在DjangoSnippets上找到了这个片段,让你在南方做同样的事情。请考虑页面右侧可能需要更改sql文件名称的注释。 此代码于2011年发布,我不确定南方是否仍然如此。

http://djangosnippets.org/snippets/2311/