template tablas queryset link example dinamicas create campos calculados abm python django django-queryset

python - tablas - ¿Cómo usar select_for_update para ''obtener'' una consulta en Django?



link en django (2)

Como dice la documentación de Django, select_for_update devuelve un Queryset . Pero get no lo hace. Ahora tengo una consulta que estoy seguro de que va a devolver sólo una tupla. Pero también necesito adquirir bloqueos para esta transacción. Entonces estoy haciendo algo como:

ob = MyModel.objects.select_for_update().filter(some conditions)

Ahora necesito modificar algunos valores de ob. Pero ob es un Queryset . Esto parece bastante simple, pero me supera. Soy bastante nuevo para Django. Algunos consejos por favor.


Simplemente llame a get , córtelo, etc. y guárdelo como de costumbre. El bloqueo está en su lugar a través de la transacción.

ob = MyModel.objects.select_for_update().get(pk=1)

Cualquier cambio se confirma al final de la transacción (que, de forma predeterminada, hasta 1.5 es por solicitud)


También can utilizar select_for_update con la función get_object_or_404 :

from django.db import transaction from django.shortcuts import get_object_or_404 with transaction.atomic(): obj = get_object_or_404(MyModel.objects.select_for_update(), pk=pk) # do some stuff with locked obj