Refs #28492 -- Stopped accessing settings at Field.db_tablespace initialization.

Deferring accesses to settings allows database fields to be initialized before
settings are loaded.
This commit is contained in:
Simon Charette 2017-08-08 13:24:25 -04:00 committed by Tim Graham
parent c466ef3b34
commit 13be453080
1 changed files with 8 additions and 3 deletions

View File

@ -158,7 +158,7 @@ class Field(RegisterLookupMixin):
self.help_text = help_text
self.db_index = db_index
self.db_column = db_column
self.db_tablespace = db_tablespace or settings.DEFAULT_INDEX_TABLESPACE
self._db_tablespace = db_tablespace
self.auto_created = auto_created
# Adjust the appropriate creation counter, and save our local copy.
@ -423,7 +423,7 @@ class Field(RegisterLookupMixin):
"choices": [],
"help_text": '',
"db_column": None,
"db_tablespace": settings.DEFAULT_INDEX_TABLESPACE,
"db_tablespace": None,
"auto_created": False,
"validators": [],
"error_messages": None,
@ -433,8 +433,9 @@ class Field(RegisterLookupMixin):
"error_messages": "_error_messages",
"validators": "_validators",
"verbose_name": "_verbose_name",
"db_tablespace": "_db_tablespace",
}
equals_comparison = {"choices", "validators", "db_tablespace"}
equals_comparison = {"choices", "validators"}
for name, default in possibles.items():
value = getattr(self, attr_overrides.get(name, name))
# Unroll anything iterable for choices into a concrete list
@ -688,6 +689,10 @@ class Field(RegisterLookupMixin):
def unique(self):
return self._unique or self.primary_key
@property
def db_tablespace(self):
return self._db_tablespace or settings.DEFAULT_INDEX_TABLESPACE
def set_attributes_from_name(self, name):
if not self.name:
self.name = name