Django Enum не отражает @override_settings()

from django.conf import settings
from django.test import TestCase

class Enum1(Enum):
    X = f'{settings.X}'


@override_settings(X='abc')
class Test1(TestCase):
    def test1(self):
        self.assertEqual(settings.X, Enum1.X.value) # Doesnt work
  • У меня есть переменная X в settings.py
  • Я изменяю ее в этом тестовом примере на X='abc'
  • Но Enum все еще использует свое старое значение.

Есть ли способ заставить Enum использовать новое значение? Один из обходных путей - если я создаю функцию в Enum1, то она работает. Например:

class Enum1(Enum):
    @classmethod
    def get_x(cls):
        return f'{settings.X}'

Общий вывод заключается в том, что любая переменная класса не отражает изменений в функции override_settings(). Только функция, которая не инстанцируется изначально при импорте файла py, отражает эти изменения.

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