Pregunta

Necesito agregar un campo de clave externa a una tabla de django model / postgres existente. De acuerdo con la documentación de django, ejecuté el comando 'sqlall myapp' para 'resolver la diferencia'.

La diferencia obvia es que la tabla en cuestión ahora tiene una columna adicional con un nuevo contraint, que se ve así:

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

Antes de jugar con mi base de datos, me gustaría entender esa declaración, en particular, ¿a qué se refiere la última parte de newcolumn_id_refs_id_4bfb2ece ?

Gracias,

Martin

¿Fue útil?

Solución

Hará que PostgreSQL comprenda y aplique su clave externa a la otra tabla y garantice que no habrá nada en myapp_table.newcolumn que no se encuentre en myapp_theothertable.id

En realidad, tu aplicación django funcionará bien incluso sin esa restricción. Sin embargo, es una buena idea tener uno en su lugar y, si lo hace después, se creará un dumpdata - loaddata -cycle.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top