How to rename a Postgres table in Django Using South
I recently started a project and used a custom user model, but unfortunately named the table user
instead of the default user table that comes with Django auth_user
. In the following examples, my user model lives in apps.accounts.models.User
I decided to use South to rename the table, it wasnt really that hard but here are some instructions on how to do it:
First you need to create an empty schema migration in the django app that has your custom user model (or really any model you want to rename):
./manage.py schemamigration accounts rename_user_to_auth_user --empty
To rename the table you have to update the schema migration create to contain the following Python code:
Now run ./manage.py migrate
and you have a new table. If you are updating the Django users table, you actually have to add yet another migration to rename the user_groups
and user_permission
tables: