First time here? Check out the FAQ!
1

How can I modify models in askbot?
 

If I want to add a new element in Class Question(question.py), What should I do?

I have modify askbot/models/question.py like this:

 title    = models.CharField(max_length=300)
 tags     = models.ManyToManyField('Tag', related_name='questions')
 answer_accepted = models.BooleanField(default=False)
 +testestest = models.BooleanField(default=False)
 closed          = models.BooleanField(default=False)

After modify question.py, I delete old database in mysql, run "python manage.py syncdb; python manage.py migrate". Then I check the question table in mysql again, but "testestest" field isn't exist in question table.

To enter a block of code:

  • enter empty line after your previous text
  • paste or type the code
  • select the code and press the button above
Preview: (hide)
iicore's avatar
23
iicore
updated 13 years ago, asked 13 years ago

Comments

see more comments

2 Answers

1

Hello, in this case it will be necessary to use South migrations.

Here is the documentation http://south.aeracode.org/.

First thing, after you change code in the models, make a schema migration:

python manage.py schemamigration askbot --auto

Then apply the migration.

python manage.py migrate askbot

All migrations for askbot live in the directory askbot/migrations - you will need to edit your migration and the subsequent askbot's migration (when we make a new one)

The edit in the migration files is necessary to specify that your migration must run after the last current askbot's migration, and the next askbot's migration must run after yours.

Here is the document explaining how to deal with migration dependencies http://south.aeracode.org/docs/dependencies.html.

South has two types of migrations - schema migrations and data migrations. Schema migrations change the database schema, while data migrations only modify the data.

At Askbot we love South - cheers to the South devs! Definitely check out their django & python hosting service called ep.io it make django deployments real easy.

To enter a block of code:

  • enter empty line after your previous text
  • paste or type the code
  • select the code and press the button above
Preview: (hide)
Evgeny's avatar
13.2k
Evgeny
updated 13 years ago, answered 13 years ago
link

Comments

see more comments
0

Thanks, Evgeny, it works!!!

To enter a block of code:

  • enter empty line after your previous text
  • paste or type the code
  • select the code and press the button above
Preview: (hide)
iicore's avatar
23
iicore
answered 13 years ago
link

Comments

see more comments