[Fixed]-How do I preload imports into Django's manage.py shell command?


For the first question, look at the manage.py shell_plus command provided by the django-extensions project. It will load all your model files on shell startup. The project has got a whole load of other useful tricks too, so it’s definitely worth checking out.

For the second question, I can only guess that you need to install readline.


you can replicate what

python manage.py shell

does by just doing:

from django.core.management import setup_environ
from mysite import settings

and you will have the environment all set up for the rest of that script. There are some other ways to do this here too: http://www.b-list.org/weblog/2007/sep/22/standalone-django-scripts/


One single thing which can solve both of your problem is ipython. ipython stores the previous executions and it can give you completion as well.



Auto importing frequently used packages in python manage.py shell_plus


#  local_settings
    ('<app_name>.models', '*'),
    ('<app_name>.forms', '*'),
    ('<app_name>.views', '*'),
    ('django.core.urlresolvers', '*'),
    ('django.db', 'connection'),
    ('django.db', 'reset_queries'),

SHELL_PLUS_DONT_LOAD = ['<app_name>', '<app_name>']



Adding extra stuff to the django shell can be done using as a starting point the shell_plus command provided in the django-extesions app, and modifying it by adding whatever you want to make available to the ‘imported_objects’ dictionary.

Eg if you duplicate the shell_plus.py file and add these two lines at the end:

# .......
alist = range(1000)
imported_objects['alist'] = alist
code.interact(local=imported_objects)  # <-- this is the original final line

When you run the shell using the new file the ‘alist’ reference will be available.
I put a longer example here: http://www.michelepasin.org/techblog/?p=1012

Leave a comment