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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top