Is it possible to generate django models from the database? Is it possible to generate django models from the database? django django

Is it possible to generate django models from the database?


Yes, use the inspectdb command:

inspectdb

Introspects the database tables in the database pointed-to by the DATABASE_NAME setting and outputs a Django model module (a models.py file) to standard output.

Use this if you have a legacy database with which you'd like to use Django. The script will inspect the database and create a model for each table within it.

As you might expect, the created models will have an attribute for every field in the table. Note that inspectdb has a few special cases in its field-name output:

[...]


(Django 1.7.1) Simply running python manage.py inspectdb will create classes for all tables in database and display on console.

 $ python manage.py inspectdb

Save this as a file by using standard Unix output redirection:

 $ python manage.py inspectdb > models.py

(This works for me with mysql and django 1.9)


I have made a reusable app based on django's inspectdb command utility, Django Inspectdb Refactor.

This breaks models into different files inside models folder from a existing database.This helps managing models when they become large in number.

You can install it via pip:

pip install django-inspectdb-refactor

Then register the app in settings.py as inspectdb_refactor

After this you can use it from command line as :

python manage.py inspectdb_refactor --database=your_dbname_defined_in_settings --app=your_app_label

This will successfully create models folder with all the tables as different model files inside your app. For example:

typical structure

More details can be found here.