2016-01-29 20 views
5

Mam urządzenie seed_data.json, na którym mam moje dane początkowe.Django: loaddata do aktualizacji danych

Czasami dodawam nowe dane do tych urządzeń i ponownie je ładuję, co prawidłowo aktualizuje moje dane.

Jednak teraz chcę usunąć z niego niektóre dane. Więc moje seed_data.json modyfikowany, na przykład, miałem coś takiego:

{"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}, 
# ... 

który stał:

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

Ale ja dostaję:

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

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

Nie ma problemu z dodawaniem niektórych danych, ale przy próbie ich usunięcia występują konflikty z kluczami podstawowymi.

Jak mogę osiągnąć to, co próbuję zrobić?

Odpowiedz

3

Urządzenia są przeznaczone tylko dla danych początkowych dla zupełnie nowych instancji bazy danych, np. Podczas uruchamiania testów. Aby zmodyfikować istniejące dane, użyj migracji.

+0

W związku z tym, aby faktycznie zmienić początkowe dane aplikacji, muszę wyczyścić moją bazę danych? – Ellone

+0

Tak, oczywiście. Dlatego nazywa się to "początkowym". –

+0

Tak, ale czasami, gdy aktualizujemy aplikację, są pewne zmiany w danych początkowych. Wyczyszczenie bazy danych spowoduje również usunięcie danych, które nie są początkowe. Pewnie mogę korzystać z interfejsu administratora, ale chciałem zachować czysty klucz podstawowy na rekordach – Ellone