0
votes

how to popolate table with initial data. ?? i have read this : [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

Model file :

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 contains

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);

Problem is : do i need to add something to manage.py [or] execute some command from shell [or] any other thing in order to populate table with those insert querys ??

I have tried :
python manage.py sqlall
python manage.py syncdb

1

1 Answers

0
votes

Yes, you need to run:

python manage.py syncdb

which will create all tables and then run your sql script..

Update:

Since you use south, it seems that south which takes control of syncdb and provide migrate instead does imitate syncdb and load sql files after creating tables. I found this snippet on DjangoSnippets which let you do the same thing with south. Take into consideration the notes on the right side of the page where you might need to change sql files names. This code posted on 2011 and I am not sure if this is still the case with south.

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