Question

I need to add a foreign key field to an existing django model/postgres table. As per the django documentation, I ran the 'sqlall myapp' command to 'work out the difference'.

The obvious difference is that the table in question now has an extra column with a new contraint, which looks like this:

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

Before messing with my database, I'd like to understand that statement, in particular, what does the last part of newcolumn_id_refs_id_4bfb2ece refer to?

Thanks,

Martin

Was it helpful?

Solution

It will make PostgreSQL understand and enforce your foreign key to the other table and guarantee there won't be anything in myapp_table.newcolumn that can't be found in myapp_theothertable.id

Actually, your django app will work just fine even without that constraint. However, it's a good idea to have one in place, and if you do afterwards a dumpdata - loaddata -cycle, it will be created.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top