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, отражает эти изменения.