Декоратор 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 не будет иметь никакого эффекта. Вы можете взглянуть на этот пост в блоге.

Вернуться на верх