Django model for a hierarchical database

Fewer levels isn’t a problem. However, allowing for a larger number of levels does materially change the considerations involved.

In the general case, I suggest you see this post, and the links referenced from it: Some modelling advice - #12 by KenWhitesell

There are other posts here in the forum discussing hierarchical storage of data - the key item to remember is that the different algorithms optimize different operations. There’s no one-size-fits-all solution for this - it’s one of those situations where the appropriate answer is extremely context-sensitive.

What about answers to the rest of the questions? Depending upon your answers, there may be other simplifications that can be performed.