When you are busy developing an app, it is sometimes easy to get carried away and write many many models, somewhat related. Then, the question is how to layout the website given all the models. Say you have the following models:
models: M1, M2, ..., M60
You then come to realize you can divide them into apps:
apps: AP1, AP2, ..., AP12
Then, after a while you might realize you have different projects, with different databases, business logic, target audience, etc. (e.g. a site that has lodging, skiing, equipment rental, eCommerce, etc. all under one site)
projects: P1, P2, P3
The question is if it is better to have semantically unrelated apps within one project or group related apps under separate projects?
Site
|
P1 - P2 - P3
| ...
----------------
| | | |
AP1 AP2 AP3 AP4
| ...
---------------------
| | | | |
M1 M2 M3 M4 M5
OR:
Site
|
Solo_Project
|
----------------
| | | |
AP1 AP2 AP3 AP4
| ...
---------------------
| | | | |
M1 M2 M3 M4 M5
If the former, then how should one have a meta settings.py to specify the ROOT_URLCONF and all other settings that the settings.py usually take care of (database routing, etc.)
Other than Django docs, I found Django tips: layout out an application useful (yet insufficient) readings.
Its very subjective.
I think my rule would be that if it provides a set of functionality that can be used independently of the other parts then put it in a separate app.
One of my previous projects had one big app, (plus a shopping cart type feature that I added as a separate app). I thought about splitting the main app up, but a lot of queries and views used all the tables, so in the end I decided it made more sense as one large app, rather than splitting it into multiple apps with no clear distinction in functionality.