Do I need to user schemamigration and migrate commands after changing a field name or a field data type in a model?
You need to do a schemamigration every time you change your models.
On every call of python manage.py migrate command south record number of the latest migration applied into database migrationhistory table. So if you just change existing migration it won't be applied because south would think it's already applied.
You can make a backward migration, fix next migration, even delete it and make a new one and only then migrate forward.
The problem is pretty self-explanatory in the title. Do I need to do that or I just need to edit the existing migration file?