If I understand things correctly, registration of new url-schemas to enable something like dj-database-url to support 3rd parties should be a trivial matter; just add an entry to some dictionary, with the schema as key, and the dotted-path of the backend as value.
IMO, scanning INSTALLED_APPS, or relying on ready(), is a lot of over- engineering for this. Just do the registration from the settings file, before invoking the url-parsing mechanism: from django.database_url import register_backend, configure_db register_backend('pyodbc-azure', 'sql_server.pyodbc') DATABASES = {'default' : configure_db() } The only barrier I see is namespacing -- the functions mentioned above cannot live in django.conf (would cause a circular import if imported from the settings module) nor django.db (which shouldn't be imported too early), and that's why I wrote `django.database_url` above. What am I missing?