2015-05-27 8 views
5

Ho un'applicazione Django 1.8 con un database PostgreSQL. Eseguo django inspectdb dalla riga di comando per esaminare i modelli per le viste, ma le viste non vengono visualizzate nell'output del modello.Il comando Django 1.8 inspectdb non visualizza le viste PostgreSQL come da documentazione

ecco l'output versioni:

17:36 $ python well/manage.py --version 
1.8.2 

Ed ecco cosa psql vede:

\dv 
       List of relations 
Schema |    Name    | Type | Owner 
--------+-------------------------------+------+--------- 
public | hospitalizations_over_30_days | view | dwatson 
public | interval_30_days    | view | dwatson 
(2 rows) 

Dal django 1.8.2 documentazione:

New in Django 1.8: 
A feature to inspect database views was added. In previous versions, only tables (not views) were inspected. 

Come posso ottenere il PostgreSQL visualizzazioni da visualizzare nell'output di Django 1.8.2 inspectdb?

+0

qualsiasi successo nel trovare una soluzione? –

+0

hai mai funzionato? –

+1

No, non ho trovato una soluzione. –

risposta

0

Come di Django 1.10, si può semplicemente nominare una vista individuale come parametro al comando inspectdb:

$ python well/manage.py inspectdb hospitalizations_over_30_days 

Il valore di default sarà solo models.py uscita per le tabelle, ma i modelli per le viste possono essere generati inspectdb individualmente nominandoli.

Se si desidera inspectdb generare modelli per tutte le tabelle e viste per impostazione predefinita, è necessario modificare il sorgente di Django. In Django 2.0, modificare line 57 in django/core/management/commands/inspectdb.py a:

tables_to_introspect = options['table'] or connection.introspection.table_names(cursor=cursor, include_views=True) 

Inoltre, fate attenzione che il modello non avrà un campo con primary_key=True set, è necessario aggiungere manualmente una chiave primaria.