
В настоящее время нет - каждый проект использует одну базу данных, и каждое приложение должно существовать в ней. Если вы хотите иметь базу данных для конкретного приложения, вы не можете сделать это через Django ORM. См. Вики-страницу Django на Поддержка нескольких баз данных.
Пока это невозможно, но есть некоторые разговоры об этом в вики, Поддержка нескольких баз данных в Django. Этот вопрос также поднимался во время доклад о будущем Django на DjangoCon 2008 и был одним из наиболее приоритетных вопросов.
Да, низкоуровневый API для этого есть, но на данный момент ему просто не хватает удобного высокоуровневого API. Эти цитаты взяты из Джеймс Беннетт (менеджер по выпуску Django) о программировании на Reddit:
It's been there -- in an extremely low-level API for those who look at the codebase -- for months now (every
QuerySetis backed by aQuery, which in turn accepts a DB connection as an argument). There isn't any high-level documented API for it, but I know people who are already doing and have been doing stuff like multiple-DB/sharding scenarios....it's not necessarily something that needs a big write-up; the
__init__()method ofQuerySetaccepts a keyword argumentquery, which should be an instance ofdjango.db.models.sql.Query. The__init__()method ofQuery, in turn, accepts a keyword argumentconnection, which should be an instance of (a backend-specific subclass for your DB of)django.db.backends.BaseDatabaseWrapper.From there, it's pretty easy; you could, for example, override
get_query_set()on a manager to always return aQuerySetusing the connection you want, or set up things like sharding logic to figure out which DB to use based on incoming query parameters, etc., etc.
Уже поддерживается http://docs.djangoproject.com/en/dev/topics/db/multi-db/