Django famously had a "magic removal" refactor before 1.0 as they collectively decided they had gone too far. They've since plotted a more conservative path but the ORM and similar magic was deemed reasonable.
I've found Django's metaclass usage pretty robust over the years. The curtain mostly remains unpeeked behind.