¿Es posible actualizar el estado de un objeto django desde la base de datos? Me refiero a un comportamiento más o menos equivalente a:
new_self = self.__class__.objects.get(pk=self.pk)
for each field of the record:
setattr(self, field, getattr(new_self, field))
ACTUALIZACIÓN: Encontró una guerra de reapertura / corrección en el rastreador: http://code.djangoproject.com/ticket/901 . Todavía no entiendo por qué a los mantenedores no les gusta esto.
python
django
django-models
grep
fuente
fuente
commmit
. Una vez que haya hecho eso, tendría que esperar a que se confirme la próxima transacción SQL. ¿Por qué hacer eso? ¿Cuánto tiempo esperarás para la próxima transacción?Respuestas:
A partir de Django 1.8, los objetos de actualización están integrados. Enlace a documentos .
fuente
refresh_from_db
solo actualizará los campos ya rellenados.DoesNotExist
excepción si el objeto subyacente se eliminó al llamarrefresh_from_db
. FYI.Me resultó relativamente fácil recargar el objeto desde la base de datos de esta manera:
fuente
refresh_from_db
resuelve todos estos problemas.En referencia al comentario de @ grep, ¿no debería ser posible hacer:
fuente
refresh_from_db
método.Como señaló @Flimm, esta es una solución realmente increíble:
Esto vuelve a cargar todos los datos de la base de datos en el objeto.
fuente