Код: Выделить всё
chart_records = Chart.objects.select_for_update().filter(state_id=state_pk,
reviewer_id__isnull=True,
project_id=project, assignment_sequence__isnull=False)
.order_by('assignment_sequence')
# only one chart is updated in this case.
chart_serializer = ChartSerializer(chart_records[0], data=requested_data_new, partial=True)
if not chart_serializer.is_valid():
error = chart_serializer.errors
return error, message, chart_id
chart_serializer.save()
Код: Выделить всё
chart_records = Chart.objects.filter(state_id=state_pk,
reviewer_id__isnull=True,
project_id=project, assignment_sequence__isnull=False)
.order_by('coder_assignment_sequence')[:1].select_for_update()
Код: Выделить всё
SELECT "id", "status", "state_id", "level_id"
FROM "chart"
WHERE ("healthcare_data_chart"."assignment_sequence" IS NOT NULL AND "project_id" = 167 AND "reviewer_id" IS NULL AND "state_id" = 2)
ORDER BY "coder_assignment_sequence"
ASC LIMIT 1 FOR UPDATE
Подробнее здесь: [url]https://stackoverflow.com/questions/78548628/better-way-to-implement-select-for-update-to-fetch-and-lock-only-one-row-in-dj[/url]