Adicionar novos campos em um model já criado

718 views
Skip to first unread message

vinyguitar

unread,
May 25, 2009, 5:17:38 PM5/25/09
to Django Brasil
Olá para todos!
Como faço para adicionar um novo campo em um model que já foi criado e
já está sendo utilizado.

Exemplo:

#Antigo

class Model( models.Model ):
campo_velhor = models.CharField( )

........


#Nova
class Model( models.Model ):
campo_velho = models.CharField()
campo_novo = models.CharField()


....

Eu já tentei apenas adicionar o campo no model e rodar o syncdb mas
nao deu certo....

Abraços

Julio Nobrega

unread,
May 25, 2009, 5:40:21 PM5/25/09
to django...@googlegroups.com
O Django não faz isso sozinho, mas já teve gente que precisou, olha
essa página:

http://code.djangoproject.com/wiki/SchemaEvolution

2009/5/25 vinyguitar <vinyg...@gmail.com>:
--
Julio Nobrega - http://www.inerciasensorial.com.br

Milton - Tron - Goiânia-Go

unread,
May 26, 2009, 6:26:56 AM5/26/09
to Django Brasil
Vinyguitar, bom dia

Quando vocÊ roda o syncdb o Python gera as tabelas das classes que
ainda não foram criadas. Para que você possa 'alterar', 'deletar' e
'criar' novos campos às tabelas criadas você deverá usar outras
ferramentas que acessem direto no banco.

Em ambiente de desenvolvimento eu uso o 'sqlite3'.
Para alterá-lo eu uso um software gratuito chamado "SQLite Database
Browser.exe".
Para baixa-lo: http://sourceforge.net/projects/sqlitebrowser/

Para atualizações mais automáticas já tem o "South" (http://
south.aeracode.org/) que atualiza o banco conforme o 'models.py'. Mas
como estou aprendendo a usá-lo agora não posso ainda dizer nada sobre
ele, somente que está atendendo bem.

Boa sorte

Willian Fernandes

unread,
May 26, 2009, 7:58:45 AM5/26/09
to django...@googlegroups.com
É por essas e outras que prefiro as Migrations do Rails...
Na boa, o Django poderia ter algo assim... Facilita muito a vida dos
devs e do pessoal de infra na hora de fazer o deploy...



2009/5/26 Milton - Tron - Goiânia-Go <milt...@gmail.com>:

Arthur Furlan

unread,
May 26, 2009, 8:07:01 AM5/26/09
to django...@googlegroups.com
2009/5/26 Willian Fernandes <maur...@gmail.com>:

> É por essas e outras que prefiro as Migrations do Rails...
> Na boa, o Django poderia ter algo assim... Facilita muito a vida dos
> devs e do pessoal de infra na hora de fazer o deploy...

Isso está sendo discutido[1] há algum tempo já.

[1]. http://code.djangoproject.com/wiki/SchemaEvolution


--
Atenciosamente,

Arthur Furlan
arthur...@gmail.com

Marcus Vinicius

unread,
May 26, 2009, 8:32:45 AM5/26/09
to django...@googlegroups.com
Mas eu não entendi mto bem o que esta discussão propõe, alguém que deve esse problema o que fez para resolver?!?

Obrigado

2009/5/26 Arthur Furlan <arthur...@gmail.com>

Willian Fernandes

unread,
May 26, 2009, 8:35:27 AM5/26/09
to django...@googlegroups.com
Sim, eu li essa página...
Espero que achem uma solução logo! :P



2009/5/26 Arthur Furlan <arthur...@gmail.com>:

Diego Manenti Martins

unread,
May 26, 2009, 8:54:52 AM5/26/09
to django...@googlegroups.com
2009/5/26 Marcus Vinicius <vinyg...@gmail.com>:

> Mas eu não entendi mto bem o que esta discussão propõe, alguém que deve esse
> problema o que fez para resolver?!?

Tu podes usar uma das soluções propostas no link.
Podes também alterar a tabela no seu banco manualmente.
Se ainda estiver desenvolvendo e puder perder os dados, podes resetar
o banco com o comando 'manage.py reset aplicacao' depois 'manage.py
syncdb'.

>> [1]. http://code.djangoproject.com/wiki/SchemaEvolution

--
diego

Luciano Rodrigues da Silva

unread,
May 26, 2009, 10:31:44 AM5/26/09
to django...@googlegroups.com
Oi Marcus,

Esse é um problema comum, mas que ainda não tem uma solução definida
no django. Como falaram, o rails tem o migrations que ajuda nesse
caso, mas ainda não há nada desse tipo para o django. Para não ficar
enrolando, a melhor coisa que vc faz é modificar o seu banco de forma
manual usando sql. Vc pode usar os comandos que são fornecidos pela
linha de comando para fazer a comparação do seu banco com os novos
modelos que vc quer criar e depois criar os sqls com os respectivos
comandos (alter table) para modificar o seu banco. Vou te passar
alguns links, mas acho que já já alguem te passa um link com mais
dicas de como fazer.

http://docs.djangoproject.com/en/dev/ref/django-admin/
http://docs.djangoproject.com/en/dev/faq/models/

--
Até,

Luciano

<quote>
"Na prática, a teoria é outra!"
</quote>

:wq!

Morcego

unread,
May 26, 2009, 7:22:15 PM5/26/09
to django...@googlegroups.com
eu uso o django-evolution
http://code.google.com/p/django-evolution/

2009/5/25 vinyguitar <vinyg...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages