2015-12-18 12 views
9

Sto sviluppando un backend Django (1.9) Rest backend e un frontend AngularJS con riferimenti Cross-site. Durante il tentativo di eseguire un comando ./manage.py dumpdata, viene generata la seguente eccezione:Django 1.9 con dati di scarico CORS: "corsheaders_corsmodel" non esiste

$ python manage.py dumpdata -o dev/dumpdata.json 
CommandError: Unable to serialize database: relation 
"corsheaders_corsmodel" does not exist 
LINE 1: SELECT COUNT(*) AS "__count" FROM "corsheaders_corsmodel" 

Qualsiasi idea di come gestire?

+0

Avete installato la versione corrente di Corsheader? –

+0

django-cors-headers == 1.1.0 – user3897818

+0

Potresti selezionare una risposta corretta a questa domanda? Sembra che @ myk-willis abbia quello giusto. – daveslab

risposta

21

Ho avuto questo stesso problema e risolto invocando python manage.py makemigrations appositamente per il corsheaders app:

$ python manage.py makemigrations corsheaders 
$ python manage.py migrate 

Penso che quello che è successo nel mio caso è stato che, dopo un aggiornamento da Django 1,8-1,9, l'iniziale la migrazione non è mai stata applicata quando ho aggiornato il mio DB.

ho rintracciato giù notando che l'applicazione corsheaders non è stato elencato nel Apply all migrations uscita di python manage.py migrate:

$ python manage.py migrate 
Operations to perform: 
    Apply all migrations: sessions, admin, xyz, auth, contenttypes 
Running migrations: 
    No migrations to apply. 

Eppure l'esecuzione di una migrazione manuale per corsheaders crea realmente la migrazione iniziale:

$ python manage.py makemigrations corsheaders 
Migrations for 'corsheaders': 
    0001_initial.py: 
    - Create model CorsModel 

Dopo aver fatto ciò, un migrate mostra corsheaders nell'output e applica correttamente la migrazione come previsto:

$ python manage.py migrate 
Operations to perform: 
    Apply all migrations: corsheaders, sessions, admin, xyz, auth, contenttypes 
Running migrations: 
    Rendering model states... DONE 
    Applying corsheaders.0001_initial... OK 
1

Se corsheaders_corsmodel tabella non esiste, allora non ci sono dati per eseguire il dump. Quindi, si può semplicemente eseguire:

$python manage.py dumpdata --exclude=corsheaders 

Ho avuto lo stesso problema e ho risolto in questo modo.

Problemi correlati