[Fixed]-Django Row Level Locking For Model Forms

1👍

After so much research I have figured out the solution. So now while getting queryset against id I am using “select_for_update”, something like this

with transaction.atomic():
    case = get_object_or_404(Case.objects.select_for_update(), pk=case_id)
    form = CaseEditForm(data, instance=case)
        if form.is_valid():
            res = form.save()
            return HttpResponseRedirect(reverse("case_list"))

So as you can see now I am fetching the query set object under the transaction and if any exception appear during transaction it will automatically rollback and Also as I am using select_for_update so it will lock the row until the transaction get succeeded or failed.

If anyone have better suggestion then kindly share it.

Leave a comment