2016-01-29 4 views
5

Ich habe eine Vorrichtung seed_data.json, auf der ich meine Ausgangsdaten habe.Django: Ladedaten zum Aktualisieren von Daten

Manchmal füge ich neue Daten in diese Fixtures ein und lade sie neu, wodurch meine Daten korrekt aktualisiert werden.

Allerdings möchte ich jetzt einige Daten daraus entfernen. So modifizierte ich meine seed_data.json, zum Beispiel, hatte ich so etwas:

{"fields": {"name": "Field 0"},"model": "catalog.product","pk": 1}, 
{"fields": {"name": "Field 1"},"model": "catalog.product","pk": 2}, 
{"fields": {"name": "Field 2"},"model": "catalog.product","pk": 3}, 
# ... 

Das wurde:

{"fields": {"name": "Field 1"},"model": "catalog.product","pk": 1}, 
{"fields": {"name": "Field 2"},"model": "catalog.product","pk": 2}, 
# ... 

Aber ich bin immer:

django.db.utils.IntegrityError: Problem installing fixture .....\seed_data.json

Could not load catalog.Product(pk=2): column name is not unique

Es gibt also kein Problem beim Hinzufügen von Daten, aber beim Versuch, einige Daten zu entfernen, gibt es Konflikte mit den Primärschlüsseln.

Wie kann ich erreichen, was ich versuche zu tun?

Antwort

3

Fixtures dienen nur als Ausgangsdaten für vollständig neue Datenbankinstanzen, z. B. beim Ausführen von Tests. Um vorhandene Daten zu ändern, verwenden Sie Migrationen.

+0

SO, um die Ausgangsdaten der Anwendung tatsächlich zu ändern, muss ich meine Datenbank löschen? – Ellone

+0

Ja natürlich. Deshalb heißt es "initial". –

+0

Ja, aber manchmal, wenn wir eine Anwendung aktualisieren, gibt es einige Änderungen an den ursprünglichen Daten. Durch das Löschen der Datenbank werden auch Daten entfernt, die nicht initial sind. Sicher kann ich die Admin-Schnittstelle verwenden, aber ich wollte sauber Primärschlüssel auf Aufzeichnungen halten – Ellone

Verwandte Themen