Solucionado (ver solução)
Solucionado
(ver solução)
10
respostas

Persistência

O State claramente funciona muito bem para situações onde o objeto conclui seu ciclo de vida em tempo de execução. Mas fiquei na dúvida de como fazer em situações onde eu precise inserir no banco o objeto que possui estados (e depois alterá-los, obviamente).

Como que a função "Save" do Django vai saber o que colocar no banco para que fique registrado qual o objeto de estado está atribuído? e como atribuir novamente o objeto correto quando recuperar esse registro do banco para a aplicação sem ter que usar um conjunto de ifs?

10 respostas

O save do Django não usa o padrão state, ele usa o padrão active record. O padrão state não é um padrão de persistência. Na persistência se você reinicia sua máquina, você consegue novamente os dados, no state, é algo in memory. Mas nada impede de implementar o state com persistência.

E como seria isso?

Não faço ideia como implementar o padrão Active Record, é muita coisa de infra.

Talvez isso possa dar um norte para você.

https://pt.wikipedia.org/wiki/Active_record

Eu não quero implementar o active record, gostaria apenas de implementar o state com persistência.

Então, nesse caso, você precisa declarar os atributos que guardam os valores do state como atributos de classe do Django, assim como você fez no curso.

Mas aí o django vai criar uma tabela no banco pra cada classe do state, não?

E se não fizer isso, quando eu recebo de volta o valor do state no banco eu teria que fazer uma cadeia de ifs pra descobrir qual objeto atribuir?

Só testando. É que é um tanto estranho combinar o state com persistência. Em teoria pode sim, mas na prática só vendo mesmo. É por isso que não sei os desdobramentos.

solução!

Como o Django te deixa rígido nas definições das propriedades de classe e persistência, se você sair da convenção dele terá dor de cabeça. Aliás, a vantagem do Django fazer mágica para você é sua maior desvantagem: se você quiser mudar uma vírgula não é tão trivial.

:/