Yeah. Tons of other frameworks do it better. React for instance. Any framework that actually follows [semver](https://semver.org/) and really cares deeply about backwards compatibility. I've hit backwards incompatibility on almost every upgrade. Not just major 2->3, but each minor release.
I still love love love Django, but I do wish upgrades were easier.
What kind of things have you hit? I think the last time I had an upgrade take more than a few minutes was around the 1.6-era.
(As a reminder that projects vary, I've had more times where I've had to spend time fixing React projects — usually not core but related plugins – so I think there's a heavy element of what you do and how the team works coloring impressions)
I still love love love Django, but I do wish upgrades were easier.