Mam rozwiązanie.
Musiałem wyłączyć wyzwalacze na stole, aby zatrzymać sprawdzanie ograniczenia klucza obcego.
Wyłącz wyzwalacze
def disable_triggers(self):
with connection.cursor() as cursor:
cursor.execute('ALTER TABLE "Table Name" DISABLE TRIGGER ALL;')
Włącz wyzwalacze
def enable_triggers(self):
with connection.cursor() as cursor:
cursor.execute('ALTER TABLE "Table Name" ENABLE TRIGGER ALL;')
Ważne uwagi :
-
Według ten link do dokumentu , możesz przekazać listę jako drugi argument do
execute()
(np. możesz chcieć przekazać nazwę tabeli dynamicznie), ale spowoduje to automatyczne uniknięcie zmiennych i możesz w efekcie utworzyć niepoprawne składniowo zapytanie PostgreSQL (co zajęło mi dużo czasu, aby to naprawić) -
Upewnij się, że spusty zostały ponownie włączone prawidłowo
-
Jeśli pojawia się błąd odmowy uprawnień Wtedy możesz chcieć sprawdzić uprawnienia użytkownika DB, właśnie włączyłem uprawnienia superużytkownika z PgAdmin, co było dla mnie w porządku. i wszystko z powrotem do pracy. Jak to zrobić?