Начну с определения. South — приложение Django для осуществления миграций. У меня это слово всегда вызывало больше вопросов, чем ответов поэтому, лучше расскажу что к чему.
Когда мы пишем/меняем модель нам необходимо создавать/менять структуру данных в самой базе. Если мы просто создаем модель, то с этой задачей справляется syncdb, но когда мы вносим изменения в модель syncdb оказывается беспомощной, и мы остаемся один на один со структурой данных в базе не отвечающей требованиям кода (моделей).
Вот тут на помощь приходит South. Оно позволяет отслеживать изменения в моделях и генерировать код для изменения структуры данных в базе. Кроме того, South замечательно справляется с фикстурами, которые syncdb отказывается «кушать» (например, расширенный профиль пользователя, который создается по сигналу к каждому экземпляру классического User, кто сталкивался — знает о чем речь).
Есть еще одно хорошее свойство south — оно облегчает разработку несколькими разработчиками.

Установка проста: либо кидаем south как приложение в Ваш проект на Django, либо через setup.py install, а далее добавляем в список middleware (это все есть в документации и подробно останавливаться не буду).
Далее расскажу то, чего толком так и не удалось добиться ни от одного ресурса: простого и четкого описания как, что и в каком порядке делать для получения результата.
После того, как мы установили South, он встраивается в проект и «подменяет» собой syncdb. Но, для того, чтобы запуститься самому South нужна пара таблиц: вот их-то и стоит создать через syncdb.
Итак, после установки следует запустить manage.py syncdb для создания таблиц south.
После этого необходимо сделать инициализацию, первый «коммит»: manage.py schemamigration yourapp —initial
South создаст внутри Вашего yourapp папку migrations, куда и запишет информацию о текущей структуре данных Ваших моделей (не поленитесь, загляните туда). Такое нужно проделать с каждым приложением, которое Вы хотите обрабатывать через south.
Далее будем мигрировать — приводить нашу БД в соответствие тому, что только что сгенерировали: manage.py migrate изменит структуру таблиц и загрузит фикстуры, если они, конечно, у Вас есть.
Важно: последующие «коммиты» следует проводить с ключом —auto: manage.py schemamigration yourapp —auto