Primarily. If you can get away from multiple DO databases, Django only supports this well if the list of databases is fixed. If you can afford a separate database per client, you can probably afford separate wsgi processes (and separate DATABASES settings) for different clients. Then you simply create a new wsgi process for the new client and do not have to change the settings.
If you still want to do what you are planning, here are some tips:
Reloading settings is not an option dynamically. There are a lot of problems. Even if you fight with everyone, they can return at a time when you are not expecting, and you will spend hours (if not days) on debugging.
If your database settings are consistent (that is, the same password and user for all clients), you might consider using defaultdict for the DATABASES variable. The default value of dict has a factory parameter. You can have something like this in the factory:
def database_configuration_factory(name):
source share