Ho problemi a caricare i dispositivi Django nel mio database MySQL a causa di conflitti di tipo contenttypes. Per prima cosa ho provato lo scarico dei dati da solo la mia app come questo:Problemi con i tipi di contenuto durante il caricamento di un dispositivo in Django
./manage.py dumpdata escola > fixture.json
ma ho continuato a ottenere manca problemi chiave esterna, perché la mia app "escola" utilizza le tabelle da altre applicazioni. Ho continuato ad aggiungere applicazioni aggiuntive fino a quando ho avuto modo di questo:
./manage.py dumpdata contenttypes auth escola > fixture.json
ora il problema è il seguente violazione del vincolo quando provo a caricare i dati da un dispositivo di prova:
IntegrityError: (1062, "Duplicate entry 'escola-t23aluno' for key 2")
Sembra che il problema è che Django sta tentando di ricreare dinamicamente contenttypes con valori di chiave primaria diversi che sono in conflitto con i valori chiave primari della fixture. Questo sembra essere lo stesso del bug documentato qui: http://code.djangoproject.com/ticket/7052
Il problema è che la soluzione consigliata è scaricare l'app contenttypes che sto già facendo !? Cosa dà? Se fa qualche differenza, ho alcune autorizzazioni di modello personalizzato come documentato qui: http://docs.djangoproject.com/en/dev/ref/models/options/#permissions
stavo correndo in questo anche l'azzeramento dei ContentTypes app lavorato per me come bene. Grazie per il consiglio! – Beau
Come li hai ripristinati? In classe di test case? Datemi un esempio per favore –
Non uso le fixture per le unittests, generalmente creo dati di test usando l'ORM in un metodo setup() perché è più facile mantenere la sincronizzazione con i test. Quindi non ho mai dovuto farlo in una classe di TestCase, anche se sono sicuro che se si inseriscono nel codice per la classe TestCase di Django si potrebbe capire come fare un reset post syncdb e prima del caricamento del fixture in una sottoclasse. Per me era solo "./manage.py resettare contenttypes" in uno script bash prima di "./manage.py loaddata my_fixture". –