This package (which I am the original author of) will make most of the N+1 issues disappear https://pypi.org/project/django-auto-prefetch/
It's currently maintained by Adam Johnson a Django core dev (and friend of mine) and there's is work toward merging it into Django which would be nice.
Because you can call it anywhere it's real easy to accidentally do an N+1. Engineers have to set up a DAO of some kind to restrict access to it and ensure one to many joins are called collectively, eg fetching an article and all of its comments, one at a time. Especially in large teams, with distributed concerns, this happens all the time.
yeah DRF feels a bit dated nowadays. I really love Django's batteries included approach, but if I can choose the stack of the next project I'm working on it's definitely going to be something faster & lighter, and without an ORM (or at least an ORM that makes it difficult to have N+1 everywhere)
Let's suppose you have a student model with the teacher as a foreign key. If you want to query 100 students with the teacher name then it will query 101 times. 1 for 100 students and other 100 for respective student's teacher name