- Declared the default auto field for the app to
BigAutoField
. This avoids issues where projects that have theirDEFAULT_AUTO_FIELD
set to"django.db.models.AutoField"
from seeing this app as needing migrations generated.django.db.models.AutoField
is the default auto field if the setting is not set, but newly generated projects automatically set it todjango.db.models.BigAutoField
.
Breaking Changes:
- Drop support for Django 3.2, 4.0, 4.1.
- Change the default safe marking to
Safe.always
. This gives a better default experience for working with third-party apps. - Disallow faking migrations when using
safemigrate
. Safe.after_deploy
andSafe.always
migrations will be reported as blocked if they are behind a blockedSafe.before_deploy
migration.Safe.after_deploy
migrations are now reported along with other delayed migrations instead of being separately reported as protected.
Other improvements:
- Add support for Django 5.1 and 5.2.
- Add support for Python 3.13.
- The standard values for
safe
are now methods that may be called:Safe.before_deploy()
Safe.after_deploy()
Safe.always()
- Add support for allowing a
Safe.after_deploy(delay=timedelta())
migration to be migrated after the delay has passed. - Convert
Safe
to be a custom class rather than anEnum
. - Rename internal enums for clarity and PEP 8 alignment.
- Use
uv
as the build tool.
- Add
settings.SAFEMIGRATE = "disabled"
setting to disablesafemigrate
protections.
- Add support for Django 5.0.
- Add support for Python 3.12.
- Expand test matrix to all supported combinations of Django and Python.
- Add a pre-commit hook to ensure migrations have a safe attribute.
- Add support for Django 4.1, 4.2.
- Add support for Python 3.11.
- Drop support for Django 3.0, 3.1.
- Drop support for Python 3.6, 3.7.
- Add support for Django 4.0.
- Drop support for Django<3.
- Add support for Django 3.
The valid values for
safe
are:Safe.before_deploy
Safe.after_deploy
Safe.always
Import with
from django_safemigrate import Safe
.True
is nowSafe.before_deploy
, andFalse
is nowSafe.after_deploy
.The default safety marking, when unspecified, is now
Safe.after_deploy
, instead ofSafe.before_deploy
.Safe.always
allows for migrations that may be run either before or after deployment, because they don't require any database changes.Multiple dependent
Safe.after_deploy
migrations do not block deployment as long as there are no dependentSafe.before_deploy
migrations.Enforce that any given value of safe is valid.
- Initial Release