Django ne fournit pas explicitement d'API pour effectuer le verrouillage des tables. D'après mon expérience, un code bien conçu a rarement besoin de verrouiller une table entière, et la plupart des problèmes de concurrence peuvent être résolus avec un verrouillage au niveau des lignes. C'est un ultime effort :il ne résout pas la concurrence, il tue simplement toute tentative de concurrence.
Si vous avez vraiment besoin d'un verrouillage au niveau de la table, vous pouvez utiliser un curseur et exécuter des instructions SQL brutes :
from django.db import connection
with connection.cursor() as cursor:
cursor.execute("LOCK TABLES %s READ", [tablename])
try:
...
finally:
cursor.execute("UNLOCK TABLES;")