django: aggiunta manuale di una colonna di chiave esterna (newcolumn_id_refs_id_4bfb2ece?)
-
05-07-2019 - |
Domanda
Devo aggiungere un campo chiave esterna a una tabella modello / postgres django esistente. Secondo la documentazione di Django, ho eseguito il comando 'sqlall myapp' per 'capire la differenza'.
L'ovvia differenza è che la tabella in questione ora ha una colonna aggiuntiva con un nuovo contrappeso, che assomiglia a questo:
ALTER TABLE "myapp_mytable" ADD CONSTRAINT newcolumn_id_refs_id_4bfb2ece
FOREIGN KEY ("newcolumn_id") REFERENCES "myapp_theothertable" ("id")
DEFERRABLE INITIALLY DEFERRED;
Prima di fare confusione con il mio database, vorrei capire quell'affermazione, in particolare, a cosa si riferisce l'ultima parte di newcolumn_id_refs_id_4bfb2ece
?
Grazie,
Martin
Soluzione
Farà in modo che PostgreSQL comprenda e imponga la tua chiave esterna all'altra tabella e garantirà che non ci sarà nulla in myapp_table.newcolumn che non possa essere trovato in myapp_theothertable.id
In realtà, la tua app django funzionerà perfettamente anche senza quel vincolo. Tuttavia, è una buona idea averne uno sul posto, e se successivamente fai un dumpdata - loaddata -cycle, verrà creato.