2017-05-26 5 views
1

Ich verwende eine PostgreSQL-Datenbank für meine Django-App mit pgcryto-Erweiterung installiert. Auf dem Produktionsserver erstelle ich manuell einen Benutzer und führe dann CREATE EXTENSION pgcrypto; aus, um die Erweiterung zu installieren. JedochDjango-Test mit pgcrypto fehlgeschlagen

wenn ich ./manage.py test laufen nicht, weil meine Modelle die EncryptedTextField Feld von pgcrypto_expressions verwenden, ist die Testdatenbank, die automatisch erstellt wird nicht über die Verlängerung natürlich installiert (da es aktiviert werden muss explizit für jede Datenbank erstellt). Wie kann ich Code/Befehle zwischen dem Zeitpunkt, zu dem Django meine Testdatenbank einrichtet, und den Migrationen beginnen?

Oder, wie kann ich diese Erweiterung global in PostgreSQL aktivieren?

+0

Sie können eine Migration erstellen, die die Erweiterung installiert - siehe das Beispiel [in der Dokumentation] (https://docs.djangoproject.com/en/1.11/ref/contrib/postgres/operations/#creating-extension-using -migrationen). – Alasdair

+0

@Alasdair Toll, genau das, was ich brauche .. Ich hatte einen kurzen Blick, aber da ich noch ein Noob bin, wo gebe ich diesen Code? Irgendeine Datei und es wird es aufnehmen? Muss ich es in die 001 _... Migrationsdatei einfügen (aber das wird dann jedes Mal überschrieben) – strangetimes

+0

Ich verstehe nicht, warum es überschrieben wird. Es kann in die Migrationsdatei für jede App, die Sie möchten, gehen. Idealerweise fügen Sie sie als '0001_initial'-Migration für eine App hinzu. Solange alle Migrationen, die 'EncryptedTextField' verwenden, diese Migration als [Abhängigkeit] (https://docs.djangoproject.com/en/1.11/topics/migrations/#dependencies) haben, sollte es funktionieren. – Alasdair

Antwort

0

Mit Hilfe in erster Linie von @Alasdair konnte ich eine Dummy-App einrichten, die zwischen meiner App und dem Rest sitzt. Ich war dann in der Lage, meine Abhängigkeiten so zu optimieren, dass der Build-Server weiterhin Migrationen in der echten App bereinigt, während immer die pgcrypto-Erweiterung installiert wird, bevor meine App migriert wird.

Verwandte Themen