One of my deploy steps on Wercker is to run South migrations:

- script:
  name: migrate with south
  code: heroku run "python manage.py migrate" -a $HEROKU_APP_NAME

There is a known issue with the Heroku client that the true exit status of the command is not returned by the client. To workaround this problem you can install the heroku-exit-status plugin:

- script:
  name: install heroku-exit-status plugin
  code: heroku plugins:install https://github.com/glenngillen/heroku-exit-status.git

Now if the migrate fails, the Wercker deployment also fails.

I’ve made the full deploy steps available in a Gist.