112👍
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:
[…]
39👍
(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)
- [Django]-How to submit form without refreshing page using Django, Ajax, jQuery?
- [Django]-Django celery task: Newly created model DoesNotExist
- [Django]-Django edit user profile
12👍
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:
More details can be found here.
- [Django]-Querying django migrations table
- [Django]-How can I disable logging while running unit tests in Python Django?
- [Django]-Copy a database column into another in Django