2009-09-10 7 views
1

Je dois ajouter un champ de clé étrangère à une table django existante/postgres. Conformément à la documentation de django, j'ai exécuté la commande 'sqlall myapp' pour 'travailler la différence'.django: ajout manuel d'une colonne de clé étrangère (newcolumn_id_refs_id_4bfb2ece?)

La différence évidente est que la table en question a maintenant une colonne supplémentaire avec un nouveau contraint, qui ressemble à ceci:

ALTER TABLE "myapp_mytable" ADD CONSTRAINT newcolumn_id_refs_id_4bfb2ece 
FOREIGN KEY ("newcolumn_id") REFERENCES "myapp_theothertable" ("id") 
DEFERRABLE INITIALLY DEFERRED; 

Avant de jouer avec ma base de données, je voudrais comprendre cette déclaration, en particulier, à quoi fait référence la dernière partie de newcolumn_id_refs_id_4bfb2ece?

Merci,

Martin

Répondre

1

Il fera PostgreSQL comprendre et d'appliquer la clé étrangère à l'autre table et garantir qu'il n'y aura plus rien dans myapp_table.newcolumn qui ne peut être trouvé dans myapp_theothertable. id

En fait, votre application django fonctionnera très bien même sans cette contrainte. Cependant, c'est une bonne idée d'en avoir un en place, et si vous faites ensuite un dumpdata-loaddata -cycle, il sera créé.

Questions connexes