Запутанное содержимое настроек 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.

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