[pyar] [django] incluyendo operaciones en la misma transacción

xavier lesa xavierlesa en gmail.com
Mie Ene 5 18:35:45 ART 2011


Hola si entendí bien, con signals podes hacer eso mismo, sino no entendí
bien. ;)

Slds

Xavier Lesa

Desarrollo y Tecnología
Personal: +11 15 3868 3918
Skype: xavierlesa
twitter: @xavierlesa



2011/1/5 Maximiliano Robaina <maxi_robaina en yahoo.com.ar>

> Hola gente,
>
> Bueno, no se si el subject es muy descriptivo al problema pero no se me
> ocurrió otro.
>
> <disclaimer>
> Lo que expongo acá es a modo de ejemplo, pero es muy cercano a la
> realidad y por lo tanto no lo probé por lo que puede haber errores
> </disclaimer>
>
> El tema es el siguiente:
>
> Tengo un modelo 'Comprobante' el cual tiene un atributo 'estado' que
> almacena un valor (int) correspondiente al estado actual del comprobante
> (que es Fk con un modelo Estado).
>
> Por otro lado, tengo un modelo CbteEstados el cual va guardando el trace
> de cada cambio de estado del comprobante.
> Pasando en limpio sería algo así (solo a modo de ejemplo):
>
> class Comprobante(models.Model):
>        id
>        estado  (fk con estado) # estado actual del comprobante
>
> class CbteEstados(models.Model)
>      id
>      cbte  (fk con Comprobante)
>      estado (fk con Estado)
>
>
> Ahora, cada vez que un comprobante cambia de estado, tengo que crear una
> instancia (bueno, insertar un registro) en CbteEstados, por lo tanto
> esta última relación me va manteniendo todos los cambios de estado del
> cbte.
>
> Entonces, si hago:
>
> cbte = Comprobante()
> cbte.estado = new_estado
> cbte.save()
>
> Cuando se hace el save() quiero que guarde el cambio en CbteEstados, por
> la tanto lo primero que se me ocurre es sobreescribir el método save()
> de Comprobante para allí insertar en CbteEstados.
>
> # método save del modelo Comprobante
> def save(self, force_insert=False, force_update=False):
>        super(Comprobante, self).save(force_insert, force_update)
>        ce = CbteEstados()
>        ce.cbte = self
>        ce.estado = self.estado
>        ce.save()
>
>
> Ahora, lo primero que veo es, el save() de CbteEstados ocurre en otra
> transacción del save() de Comprobante ? Es así, no?
>
> Podría usar el decorador @transaction para manejar yo la atomicidad de
> la operación, pero es correcto usar esto en el save() de mi modelo ?
>
> ¿Hay alguna otra forma de manjar esto?
>
>
> Bueno, se mi hizo demasiado largo el planteo del problema.
> Espero haber sido claro.
>
> Gracias de antemano.
>
> Saludos.
> ---
> Maxi
>
>
>
>
>
>
>
>
>
>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110105/b3b70996/attachment.html>


More information about the pyar mailing list