Django non fornisce esplicitamente un'API per eseguire il blocco delle tabelle. Nella mia esperienza, il codice ben progettato raramente ha bisogno di bloccare un'intera tabella e la maggior parte dei problemi di concorrenza può essere risolta con il blocco a livello di riga. È un ultimo sforzo:non risolve la concorrenza, semplicemente uccide qualsiasi tentativo di concorrenza.
Se hai davvero bisogno del blocco a livello di tabella, puoi usare un cursore ed eseguire istruzioni SQL grezze:
from django.db import connection
with connection.cursor() as cursor:
cursor.execute("LOCK TABLES %s READ", [tablename])
try:
...
finally:
cursor.execute("UNLOCK TABLES;")