¿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.
Esto parece una función innecesaria; Ya es posible volver a buscar el objeto desde la base de datos.
—
Stephan
Me gustaría esto también, pero se ha cerrado repetidamente aquí
—
Eruciforme
No es apropiado porque los objetos modelo de Django son proxies. Si obtiene la misma fila de la tabla en dos objetos: x1 = X.objects.get (id = 1); x2 = X.objects.get (id = 1), se probarán como iguales pero son objetos diferentes y el estado no se comparte. Puede cambiar ambos de forma independiente y guardarlos: el último guardado determina el estado de la fila en la base de datos. Por lo tanto, es correcto recargar con una asignación simple: x1 = X.objects.get (id = 1). Tener un método de recarga llevaría a muchas personas a inferir erróneamente que x1.f = 'nuevo valor'; (x1.f == x2.f) es verdadero.
—
Paul Whipp
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?