django-object-utils

UNKNOWN


License
BSD-3-Clause
Install
pip install django-object-utils==0.0.1

Documentation

django-object-utils

This small library provides helpers for updating Django model objects without race conditions.

Installation

pip install django-object-utils

Usage

from django_object_utils import reload_object, update_object, lock_object

user = User.objects.get(pk=1)

# Reload object in-place with the latest version from the database
reload_object(user)

# Run SQL UPDATE for certain fields only and update the Python object
update_object(user, username='john', email='john@gmail.com')

# Run SQL UPDATE and then reload the object from the database
update_object(user, balance=F('balance')+payment, reload=True)

if request.method == 'POST':
        with transaction.atomic():
                # Enter a critical section and ensure that the object is the latest version.
                # Use the corresponding database row as the synchronization monitor.
                lock_object(user)
                form = UserForm(data=request.METHOD)
                form.save()