2013-05-30 10 views
6

Sto provando a fare manage.py loaddata myfixture.json in modo voluminoso per sovrascrivere diversi record nel mio database. Tuttavia, mi dà l'errore:Come evitare che i dispositivi Django siano in conflitto con i dati esistenti

IntegrityError: Problem installing fixture 'myfixture.json': Could not load myapp.Person(pk=1): (1062, "Duplicate entry 'Bob' for key 'name'") 

ho pensato che il comportamento di loaddata è stato quello di sovrascrivere i record se la chiave primaria corrisponde a un record esistente? Ho sbagliato, o è stato cambiato in Django 1.5? Come faccio a sovrascriverlo?

+0

sei sicuro che la chiave primaria corrisponda? puoi pubblicare parte per Bob da myfixture.json? sei sicuro che Bob in db abbia pk = 1? – fsw

+1

Hai provato a creare il tuo dispositivo con chiavi naturali (dumpdata - naturale)? – DimmuR

risposta

4

Ho trovato un modo per modificare il comando loaddata di Django per analizzare correttamente le chiavi naturali durante il caricamento ed evitare di ricaricare i duplicati. Il comando modificato è pubblicato here. Le uniche differenze tra i dati di carico ufficiali sono le righe 189-201.

1

Forse se si crea un comando e si chiamano le fixture da esso è possibile gestire la situazione.

Secondo la mia opinione, i dispositivi sono per dati statici.

+0

questo dovrebbe essere un commento. – NathanOliver

Problemi correlati