Декоратор Djagno override_settings не соблюдается сериализатором DRF
В настройках Django я определил переменную settings var как
EXTRA_METADATA_ENABLED = os.getenv("EXTRA_METADATA_ENABLED", False)
Мой тест пытается переопределить это с помощью декоратора override_settings
@override_settings(EXTRA_METADATA_ENABLED="Dog")
def test_serializer_metadata_deferred_behavior(self):
serializer = ResourceBaseSerializer(self.layer)
metadata_field = vars(serializer.__class__)['_declared_fields'].get('metadata')
self.assertEqual(metadata_field.deferred, True)
Когда я проверяю var в ResourceBaseSerializer
if getattr(settings, "EXTRA_METADATA_ENABLED", False):
print("I am here")
print(settings.EXTRA_METADATA_ENABLED)
else:
print("I am there")
print(settings.EXTRA_METADATA_ENABLED) # False
Печатается
I am there.
False
Там, где я ожидал бы Dog
.
Может ли кто-нибудь пролить свет на то, что происходит? Насколько я понимаю, класс Serializer должен уважать переменную настроек
Если ваш класс ResourceBaseSerialzer
имеет какой-либо критический метод, обращающийся к настройкам, то декоратор override_settings
не будет иметь никакого эффекта. Вы можете взглянуть на этот пост в блоге.