It's good to, as a minimum, specify
RunPython so the migration can be skipped when going backwards, and even better to specify a function that undoes the migration.
The code in
forwards mutates the data, but in order to undo the change then
reverse_code is needed.
reverse_code is missing then when an attempt is made to undo the migration then Django will raise
This is a problem because it prevents rolling back the state of the database, which may be needed if a bug is detected after a production deployment and the last good version of the app needs deploying back to production. Without
reverse_code, the state of the database will be out of step with the app code.
If we spot this issue in your GitHub pull request we give this advice:
Django Doctor will run this check by default. No configuration is needed but the check can be turned on/off using check code
missing-reverse-migration in your pyproject.toml file.