Disable lineage traversal when no providers are specified in OverrideFieldData

This commit is contained in:
Calen Pennington
2015-06-15 14:34:50 -04:00
parent 6bb25982de
commit b8e63cbb4d

View File

@@ -138,6 +138,9 @@ class OverrideFieldData(FieldData):
self.fallback.delete(block, name)
def has(self, block, name):
if not self.providers:
return self.fallback.has(block, name)
has = self.get_override(block, name)
if has is NOTSET:
# If this is an inheritable field and an override is set above,
@@ -157,7 +160,7 @@ class OverrideFieldData(FieldData):
def default(self, block, name):
# The `default` method is overloaded by the field storage system to
# also handle inheritance.
if not overrides_disabled():
if self.providers and not overrides_disabled():
inheritable = InheritanceMixin.fields.keys()
if name in inheritable:
for ancestor in _lineage(block):