Is it possible to generate django models from the database?

前端 未结 3 1559
佛祖请我去吃肉
佛祖请我去吃肉 2020-11-28 03:51

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 wa

相关标签:
3条回答
  • 2020-11-28 04:06

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

    0 讨论(0)
  • 2020-11-28 04:15

    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.

    0 讨论(0)
  • 2020-11-28 04:19

    Yes, use the inspectdb command:

    • http://docs.djangoproject.com/en/dev/ref/django-admin/#inspectdb

    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:

    [...]

    0 讨论(0)
提交回复
热议问题