diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py index 2853d6c618343..837158a0a4a47 100644 --- a/django/conf/global_settings.py +++ b/django/conf/global_settings.py @@ -253,6 +253,10 @@ from django import get_version URL_VALIDATOR_USER_AGENT = "Django/%s (http://www.djangoproject.com)" % get_version() +# The tablespaces to use for each model when not specified otherwise. +DEFAULT_TABLESPACE = '' +DEFAULT_INDEX_TABLESPACE = '' + ############## # MIDDLEWARE # ############## diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index ddf695816e538..7eb57d96c9728 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -104,7 +104,7 @@ def __init__(self, verbose_name=None, name=None, primary_key=False, self.radio_admin = radio_admin self.help_text = help_text self.db_column = db_column - self.db_tablespace = db_tablespace + self.db_tablespace = db_tablespace or settings.DEFAULT_INDEX_TABLESPACE # Set db_index to True if the field has a relationship and doesn't explicitly set db_index. self.db_index = db_index diff --git a/django/db/models/options.py b/django/db/models/options.py index 788d1c80dea7e..23d9b04fe9542 100644 --- a/django/db/models/options.py +++ b/django/db/models/options.py @@ -29,7 +29,7 @@ def __init__(self, meta): self.object_name, self.app_label = None, None self.get_latest_by = None self.order_with_respect_to = None - self.db_tablespace = None + self.db_tablespace = settings.DEFAULT_TABLESPACE self.admin = None self.meta = meta self.pk = None diff --git a/docs/databases.txt b/docs/databases.txt index d4853f75f83db..5ee6aa4304e84 100644 --- a/docs/databases.txt +++ b/docs/databases.txt @@ -258,6 +258,12 @@ many-to-many table would be stored in the ``indexes`` tablespace. The ``data`` field would also generate an index, but no tablespace for it is specified, so it would be stored in the model tablespace ``tables`` by default. +The settings.py file supports two additional options to specify +default values for the db_tablespace options. This is useful for +setting a tablespace for the Django internal apps and other +contributed applications. These options are ``DEFAULT_TABLESPACE`` +and ``DEFAULT_INDEX_TABLESPACE``. + Django does not create the tablespaces for you. Please refer to `Oracle's documentation`_ for details on creating and managing tablespaces. diff --git a/docs/model-api.txt b/docs/model-api.txt index f39b711e84f00..590c601d75371 100644 --- a/docs/model-api.txt +++ b/docs/model-api.txt @@ -618,8 +618,9 @@ statement for this field. **New in Django development version** The name of the database tablespace to use for this field's index, if -indeed this field is indexed. The default is the ``db_tablespace`` of -the model, if any. If the backend doesn't support tablespaces, this +indeed this field is indexed. The default is the project's +``DEFAULT_INDEX_TABLESPACE`` setting, if set, or the ``db_tablespace`` +of the model, if any. If the backend doesn't support tablespaces, this option is ignored. ``default`` diff --git a/docs/settings.txt b/docs/settings.txt index 45ba86e6085db..bb055160a5f8f 100644 --- a/docs/settings.txt +++ b/docs/settings.txt @@ -404,6 +404,22 @@ Default: ``'webmaster@localhost'`` Default e-mail address to use for various automated correspondence from the site manager(s). +DEFAULT_TABLESPACE +------------------ + +Default: ``''`` (Empty string) + +Default tablespace to use for models that do not specify one, if the +backend supports it. + +DEFAULT_INDEX_TABLESPACE +------------------------ + +Default: ``''`` (Empty string) + +Default tablespace to use for indexes on fields that do not specify +one, if the backend supports it. + DISALLOWED_USER_AGENTS ----------------------