Omroth
Omroth

Reputation: 1119

Test whether a Django migration has been applied to a DB

I have a django project, and I wish to update a MySQL database from a previous version of the codebase to be compatible with the current version.

I have all of the migrations for the project, but I do not know which was the last one applied to this alternate database.

I can try and determine this manually, but I was wondering if there was an easier automated way of finding which the first unapplied migration is.

Upvotes: 1

Views: 927

Answers (1)

willeM_ Van Onsem
willeM_ Van Onsem

Reputation: 476594

You can work with the showmigrations command [Django-doc], this will generate a list of the migrations where it will check a box in case that migration has been applied, so:

python3 manage.py showmigrations

or for a specific app:

python3 manage.py showmigrations app_name

For example for auth, a possible result is:

$ python manage.py showmigrations auth
auth
 [X] 0001_initial
 [X] 0002_alter_permission_name_max_length
 [X] 0003_alter_user_email_max_length
 [X] 0004_alter_user_username_opts
 [X] 0005_alter_user_last_login_null
 [X] 0006_require_contenttypes_0002
 [X] 0007_alter_validators_add_error_messages
 [X] 0008_alter_user_username_max_length
 [X] 0009_alter_user_last_name_max_length
 [X] 0010_alter_group_name_max_length
 [ ] 0011_update_proxy_permissions
 [ ] 0012_alter_user_first_name_max_length

This thus means that all migrations have been applied, except the last two.

Upvotes: 4

Related Questions