Django-Extensions: как добавить локальные переменные в shell_plus

У меня есть несколько словарей, и я хочу, чтобы каждая пара ключ/значение была определена в локальной области видимости django-extensions shell_plus сессии.

Моя текущая команда управления выглядит примерно так:

import django
import code

devs = {
    'hot_water': object()
    'air': object()
}
procs = {
    'clean_keg': lambda x: 'do_something'
}

# unnecessary code when using `shell_plus`
model_map = { model.__name__: model for model in django.apps.apps.get_models() }

local = {
    'procs': procs,
    'devs': devs,
    **devs,
    **procs,
    **model_map
}

code.interact(local=local)

Теперь я обнаружил, что хочу добавить settings, models и несколько других объектов Django, которые уже включены в shell_plus, но я не могу найти способ добавить локальные переменные в сессию shell_plus.

В ответе Бретта Томаса показано как импортировать модули в shell_plus сессию, но не показано, как добавить переменные из диктоподобного объекта.

Как добавить переменные в shell_plus сессию?

Вы можете добавить переменные из вашей команды управления, например:

SHELL_PLUS_IMPORTS = [
    'my_app.management.commands.my_command import procs, devs',
    'from module.submodule2 import function3 as another1',
    'from module.submodule3 import *',
    'import module.submodule4',
]

В результате этого procs и devs из my_command будут загружены как переменные в оболочку.

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