Django: adicionar manualmente uma coluna de chave estrangeira (newcolumn_id_refs_id_4bfb2ece?)

StackOverflow https://stackoverflow.com/questions/1405206

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

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top