I ran into a migrations issue and the last comment, closing the issue as ‘wontfix’, says “Django 2.2 and 3.0 doesn’t receive bugfixes anymore.” But this page says 2.2 is supported until 2022 and 3.0 (which I’m using) into next year. Can someone help clarify this?
The full comment from Mariusz clarifies that the excepiton is simply rewritten on Django 3.1 to a different KeyError
, which is slightly clearer about the cause of the issue. It seems the bug is not in django per se, but in migrations that reference non-existent fields, which started crashing with some improvements to the mgiratinos framework.
Thanks for the clarification, I see that now. So now I need to figure out what I’m doing wrong. Looking at my database, the field is still there, so “non-existent field” must mean something else in this context. I wonder if this is a consequence of squashing all the commits in the third-party app this app depends on. That’s the only thing I could thing of that would get things out of sync.
Django doesn’t inspect your database to see fields - it only ever uses the migration history. So perhaps some operations have gone missing in the squashing so your operation that tries to use a field can’t find it.
I figured it out once I narrowed the scope of potential problems to “there’s something wrong with my migration files”. There was an issue with the squashing, which I was able to fix. Thanks so much for the help!