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

- script:
  name: migrate with south
  code: heroku run "python 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

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

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