Django: adicionar manualmente uma coluna de chave estrangeira (newcolumn_id_refs_id_4bfb2ece?)
-
05-07-2019 - |
Pergunta
Eu preciso adicionar um campo de chave estrangeira para uma já existente Django modelo de mesa / postgres. De acordo com a documentação do Django, eu corri o comando 'myapp sqlall' para 'trabalho fora a diferença'.
A diferença óbvia é que a tabela em questão tem agora uma coluna extra com um novo contraint, que tem esta aparência:
ALTER TABLE "myapp_mytable" ADD CONSTRAINT newcolumn_id_refs_id_4bfb2ece
FOREIGN KEY ("newcolumn_id") REFERENCES "myapp_theothertable" ("id")
DEFERRABLE INITIALLY DEFERRED;
Antes de mexer com meu banco de dados, eu gostaria de entender essa afirmação, em particular, o que é que a última parte do newcolumn_id_refs_id_4bfb2ece
se refere?
Obrigado,
Martin
Solução
Isso fará com que o PostgreSQL entender e aplicar a sua chave estrangeira para a outra mesa e garantir que não haverá nada em myapp_table.newcolumn que não podem ser encontrados em myapp_theothertable.id
Na verdade, a sua aplicação Django vai funcionar muito bem mesmo sem essa restrição. No entanto, é uma boa idéia ter um no lugar, e se você faz depois uma dumpdata -. Loaddata -Ciclo, ele será criado