0Day Forums
Is it possible to generate django models from the database? - Printable Version

+- 0Day Forums (https://0day.red)
+-- Forum: Coding (https://0day.red/Forum-Coding)
+--- Forum: Database (https://0day.red/Forum-Database)
+--- Thread: Is it possible to generate django models from the database? (/Thread-Is-it-possible-to-generate-django-models-from-the-database)



Is it possible to generate django models from the database? - intarsiate672075 - 07-20-2023

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


RE: Is it possible to generate django models from the database? - Sirjennierpmjwaurqg - 07-20-2023

Yes, use the `inspectdb` command:

*

[To see links please register here]


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




RE: Is it possible to generate django models from the database? - preaction659651 - 07-20-2023

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


RE: Is it possible to generate django models from the database? - chelseaznybv - 07-20-2023

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

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][2]][2]

More details can be found [here.][3]


[1]:

[To see links please register here]

[2]:

[3]:

[To see links please register here]