Apr
29
Django: Actualizar un contador en un modelo
Actualizar un contador en un modelo en Django
A veces necesitamos realizar algún tipo de operación aritmética sencilla en el modelo, y queremos que persista en la base de datos. Un ejemplo común es un contador, que queremos incrementar o decrementar en determinadas circunstancias.
Una solución sencilla sería hacerlo directamente en Python, algo como esto:
product = Item.objects.get(pk=4523) product.stock += 1 product.save() Funciona perfecto, pero tiene dos problemas: Uno es una posible condición de carrera, si tenemos la mala suerte de que otro proceso está cambiando el valor del contador stock justo durante el intervalo entre que hemos leído los datos de la base de datos y el momento es que volvemos a salvarlos.
A veces necesitamos realizar algún tipo de operación aritmética sencilla en el modelo, y queremos que persista en la base de datos. Un ejemplo común es un contador, que queremos incrementar o decrementar en determinadas circunstancias.
Una solución sencilla sería hacerlo directamente en Python, algo como esto:
product = Item.objects.get(pk=4523) product.stock += 1 product.save() Funciona perfecto, pero tiene dos problemas: Uno es una posible condición de carrera, si tenemos la mala suerte de que otro proceso está cambiando el valor del contador stock justo durante el intervalo entre que hemos leído los datos de la base de datos y el momento es que volvemos a salvarlos.