É possível atualizar o estado de um objeto django do banco de dados? Quero dizer comportamento aproximadamente equivalente a:
new_self = self.__class__.objects.get(pk=self.pk)
for each field of the record:
setattr(self, field, getattr(new_self, field))
ATUALIZAÇÃO: Foi encontrada uma guerra de reabertura / correção de erros no rastreador: http://code.djangoproject.com/ticket/901 . Ainda não entendo por que os mantenedores não gostam disso.
python
django
django-models
grep
fonte
fonte
commmit
. Depois de fazer isso, você terá que aguardar a confirmação da próxima transação SQL. Por que fazer isso? Quanto tempo você espera pela próxima transação?Respostas:
A partir do Django 1.8, a atualização de objetos é incorporada. Link para docs .
fonte
refresh_from_db
atualizará apenas esses campos já preenchidos.DoesNotExist
exceção corretamente se o objeto subjacente foi excluído ao chamarrefresh_from_db
. PARA SUA INFORMAÇÃO.Achei relativamente fácil recarregar o objeto do banco de dados da seguinte forma:
fonte
refresh_from_db
resolve todos esses problemas.Em referência ao comentário do @ grep, não deveria ser possível:
fonte
refresh_from_db
método.Como o @Flimm apontou, esta é uma solução realmente impressionante:
Isso recarrega todos os dados do banco de dados no objeto.
fonte