django: manuell das Hinzufügen einer Fremdschlüsselspalte (newcolumn_id_refs_id_4bfb2ece?)
-
05-07-2019 - |
Frage
Ich brauche ein Fremdschlüsselfeld zu einer vorhandenen django Modell / Postgres Tabelle hinzuzufügen. Gemäß der django Dokumentation, lief ich den Befehl ‚sqlall myapp‘ auf ‚den Unterschied erarbeiten‘.
Der offensichtlichste Unterschied ist, dass die Tabelle in Frage jetzt eine zusätzliche Spalte mit einem neuen contraint hat, die wie folgt aussieht:
ALTER TABLE "myapp_mytable" ADD CONSTRAINT newcolumn_id_refs_id_4bfb2ece
FOREIGN KEY ("newcolumn_id") REFERENCES "myapp_theothertable" ("id")
DEFERRABLE INITIALLY DEFERRED;
Bevor Sie mit meiner Datenbank durcheinander, ich möchte diese Aussage verstehen, insbesondere, was nicht der letzte Teil der newcolumn_id_refs_id_4bfb2ece
beziehen?
Danke,
Martin
Lösung
Es macht PostgreSQL verstehen und durchsetzen Ihre Fremdschlüssel der anderen Tabelle und es garantiert nichts in myapp_table.newcolumn sein, die in myapp_theothertable.id kann nicht gefunden werden
Eigentlich wird, Ihre django app gut funktionieren auch ohne diese Einschränkung. Allerdings ist es eine gute Idee, einen an seinem Platz zu haben, und wenn Sie das tun danach eine DumpData -. Loaddata -Zyklus, wird es erstellt