Is it possible to generate django models from the database?

DatabaseDjangoOracleOrm

Database Problem Overview


I've been messing around with Django and the Django ORM at home, and I've got to say, I feel it is one of the best out there in terms of ease of use.

However, I was wondering if it was possible to use it in "reverse".

Basically what I would like to do is generate Django models from an existing database schema (from a project that doesn't use django and is pretty old).

Is this possible?

Update: the database in question is Oracle

Database Solutions


Solution 1 - 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: > > [...]

Solution 2 - Database

(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)

Solution 3 - Database

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionTM.View Question on Stackoverflow
Solution 1 - DatabasearsView Answer on Stackoverflow
Solution 2 - DatabaseKKlalalaView Answer on Stackoverflow
Solution 3 - Databasenot2acoderView Answer on Stackoverflow