Django no proporciona explícitamente una API para realizar el bloqueo de tablas. En mi experiencia, el código bien diseñado rara vez necesita bloquear una tabla completa, y la mayoría de los problemas de simultaneidad se pueden resolver con el bloqueo a nivel de fila. Es un último esfuerzo:no resuelve la concurrencia, simplemente elimina cualquier intento de concurrencia.
Si realmente necesita un bloqueo a nivel de tabla, puede usar un cursor y ejecutar sentencias SQL sin procesar:
from django.db import connection
with connection.cursor() as cursor:
cursor.execute("LOCK TABLES %s READ", [tablename])
try:
...
finally:
cursor.execute("UNLOCK TABLES;")