Automatically create an admin user when running Django's ./manage.py syncdb

a paid nerd picture a paid nerd · Sep 23, 2009 · Viewed 36.4k times · Source

My project is in early development. I frequently delete the database and run manage.py syncdb to set up my app from scratch.

Unfortunately, this always pops up:

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): 

Then you have supply a username, valid email adress and password. This is tedious. I'm getting tired of typing test\[email protected]\ntest\ntest\n.

How can I automatically skip this step and create a user programatically when running manage.py syncdb ?

Answer

philgo20 picture philgo20 · Mar 25, 2010

I know the question has been answered already but ...

A Much simpler approach is to dump the auth module data into a json file once the superuser has been created:

 ./manage.py dumpdata --indent=2 auth > initial_data.json

You can also dump the sessions data:

./manage.py dumpdata --indent=2 sessions

You can then append the session info to the auth module dump (and probably increase the expire_date so it does not expire... ever ;-).

From then, you can use

/manage.py syncdb --noinput

to load the superuser and his session when creating the db with no interactive prompt asking you about a superuser.