2. Every day use

startmigration is a command that introspects your models and determines the corresponding database schema. Then, the changes and current model structure get recorded in the migrations file.(More on this later)

--auto is a flag that you should use most of the time to automatically determine the changes between the last South migration and the current state of your models.

migrate is a command that applies changes in your migration scripts to the database.

3. (optional) Make a tiny change and see what happens

For now, just add a new column in any one of your models and run your favorite commands from step 2.

In the migrations folder (that lives in your app folder), South creates files of form #_<migration name>.py e.g. 0002_newcolumn.py. These files contain 3 important sections.

forward() method contains the code required to sync the database with the current state of the models.

backwards() method rolls back the changes created with forward().

'Freeze' section of the file that describes the structure of the model and every model it is related to.

migrate command simply applies the changes described in forward() to the database.