J'ai la solution.
J'ai dû désactiver les déclencheurs sur la table pour arrêter la vérification des contraintes de clé étrangère.
Désactiver les déclencheurs
def disable_triggers(self):
with connection.cursor() as cursor:
cursor.execute('ALTER TABLE "Table Name" DISABLE TRIGGER ALL;')
Activer les déclencheurs
def enable_triggers(self):
with connection.cursor() as cursor:
cursor.execute('ALTER TABLE "Table Name" ENABLE TRIGGER ALL;')
Remarques importantes :
-
Selon ce lien doc , vous pouvez passer une liste comme deuxième argument au
execute()
méthode (par exemple :vous voudrez peut-être transmettre le nom de la table de manière dynamique), mais cela échappera automatiquement aux variables et vous risquez de former une requête PostgreSQL syntaxiquement erronée (ce qui m'a pris beaucoup de temps pour la corriger) -
Assurez-vous de bien réactiver les déclencheurs
-
Si vous obtenez une erreur d'autorisation refusée Ensuite, vous voudrez peut-être vérifier les autorisations de l'utilisateur de la base de données, je viens d'activer les autorisations de superutilisateur de PgAdmin, ce qui me convenait. et tout retour au travail. Comment faire ?