database - tutorial - ¿Es posible generar modelos django desde la base de datos?
select_related django example (3)
(Django 1.7.1) Simplemente ejecutando python manage.py inspectdb
creará clases para todas las tablas en la base de datos y las mostrará en la consola.
$ python manage.py inspectdb
Guarde esto como un archivo utilizando la redirección de salida estándar de Unix:
$ python manage.py inspectdb > models.py
(Esto funciona para mí con mysql y django 1.9)
He estado jugando con Django y el ORM de Django en casa, y debo decir que siento que es uno de los mejores en términos de facilidad de uso.
Sin embargo, me preguntaba si era posible usarlo en "reversa".
Básicamente, lo que me gustaría hacer es generar modelos de Django a partir de un esquema de base de datos existente (de un proyecto que no usa django y es bastante antiguo).
es posible?
Actualización: la base de datos en cuestión es Oracle
He creado una aplicación reutilizable basada en la utilidad de comando inspectdb de django, Django Inspectdb Refactor .
Esto rompe los modelos en diferentes archivos dentro de la carpeta de modelos de una base de datos existente. Esto ayuda a administrar modelos cuando se vuelven grandes en número.
Puedes instalarlo a través de pip:
pip install django-inspectdb-refactor
A continuación, registre la aplicación en settings.py como inspectdb_refactor
Después de esto, puedes usarlo desde la línea de comando como:
python manage.py inspectdb_refactor --database=your_dbname_defined_in_settings --app=your_app_label
Esto creará exitosamente la carpeta de modelos con todas las tablas como diferentes archivos de modelos dentro de su aplicación.
Sí, use el comando inspectdb
:
inspeccionar
Introspecta las tablas de la base de datos en la base de datos apuntadas por la configuración DATABASE_NAME y genera un módulo de modelo Django (un archivo models.py) a la salida estándar.
Úselo si tiene una base de datos heredada con la que desea usar Django. La secuencia de comandos inspeccionará la base de datos y creará un modelo para cada tabla dentro de ella.
Como era de esperar, los modelos creados tendrán un atributo para cada campo en la tabla. Tenga en cuenta que inspectdb tiene algunos casos especiales en su salida de nombre de campo:
[...]