Python 3.10 removed some deprecated imports from collections, which Django 2.0 and older depend on. When using this combination of versions, Django Evolution will bring back those legacy imports, allowing Django to work again.
mysqlclient also received a similar fix. Django 1.11 and older depended on some unintentional functionality, which mysqlclient maintained until the 2.1 release. We now patch these versions of Django at runtime to continue working.
Two important issues affecting upgrades were addressed:
- Django Evolution no longer tries to apply evolutions to models that were just introduced. This was a regression from previous releases.
- When upgrading from very old databases, some state for a model’s
unique_togetherindex couldn’t be compared properly, causing issues applying some upgrades. The old format for this state is now taken into account during comparison.
We’re preparing Django Evolution 2.2, which will support all versions of Django up through 4.0. This should be coming soon.
In the meantime, check out the release notes for the full changes, including other fixes in this release.