Запутанное содержимое настроек Django при использовании manage.py против call_command
У меня есть команда Django, которую я могу запустить с помощью manage.py
. Команда импортирует django.conf.settings
, затем я беру песни из базы данных, чтобы обновить части settings
:
from django.conf import settings
from music.models import Song
class Command(BaseCommand):
def handle(self, **options):
new_songs = SongSerializer(Song.objects.all(), many=True).data
settings.SONGS_TO_EXPORT = new_songs
print(settings.SONGS_TO_EXPORT)
# ...
Смущает следующее поведение:
Когда я запускаю команду с помощью
manage.py
, я могу подтвердить, что получаю свежую копию настроек, и на печать выводится обновленное содержимоеsettings.SONGS_TO_EXPORT
.Когда я запускаю команду в другом приложении, используя
call_command
от Django, я получаю старую (возможно, кэшированную???) версию настроек и содержимоеsettings.SONGS_TO_EXPORT
просто старое. Даже если я сначала запускаю команду сmanage.py
, я все равно получаю не обновленную версию настроек вcall_command
версии.
Моя цель - получить те же результаты с помощью call_command
.