Domanda È possibile generare modelli django dal database?


Ho giocato a casa con Django e il Django ORM, e devo dire che ritengo che sia uno dei migliori in circolazione in termini di facilità d'uso.

Tuttavia, mi chiedevo se fosse possibile usarlo in "reverse".

Fondamentalmente quello che mi piacerebbe fare è generare modelli Django da uno schema di database esistente (da un progetto che non usa django ed è piuttosto vecchio).

È possibile?

Aggiornare: il database in questione è Oracle


55
2017-07-24 18:49


origine


risposte:


Sì, usa il inspectdb comando:

inspectdb

Introspe le tabelle del database nel database indicato dall'impostazione DATABASE_NAME ed emette un modulo del modello Django (un file models.py) sullo standard output.

Utilizzare questo se si dispone di un database legacy con il quale si desidera utilizzare Django. Lo script controllerà il database e creerà un modello per ogni tabella al suo interno.

Come ci si potrebbe aspettare, i modelli creati avranno un attributo per ogni campo nella tabella. Nota che inspectdb ha alcuni casi speciali nel suo output del nome di campo:

[...]


72
2017-07-24 18:52



(Django 1.7.1) Semplicemente in esecuzione python manage.py inspectdb creerà le classi per tutte le tabelle nel database e mostrerà sulla console.

 $ python manage.py inspectdb

Salvalo come file usando il reindirizzamento output Unix standard:

 $ python manage.py inspectdb > models.py

(Funziona per me con mysql e django 1.9)


13
2018-06-14 18:40



Ho creato un'app riutilizzabile basata sull'utilità di comando inspectdb di django, Django Inspectdb Refactor.

Questo rompe i modelli in file diversi all'interno della cartella dei modelli da un database esistente. Questo aiuta a gestire i modelli quando diventano grandi.

Puoi installarlo tramite pip:

pip install django-inspectdb-refactor

Quindi registra l'app in settings.py as inspectdb_refactor

Dopo questo puoi usarlo dalla riga di comando come:

python manage.py inspectdb_refactor --database=your_dbname_defined_in_settings --app=your_app_label

Ciò creerà correttamente la cartella modelli con tutte le tabelle come file di modelli diversi all'interno della tua app.


1
2018-02-21 09:25