2010-10-30 5 views
7

Ho commesso un errore durante la creazione del mio modello utente e sto cercando di recuperare.Caricamento di un dispositivo prima di una migrazione verso sud

Ho creato una migrazione verso sud che copia i miei vecchi modelli utente e crea i modelli django.contrib.auth.models.User. Per garantire che i miei attuali utenti non vengano lasciati al buio, ho creato un sacco di programmi per garantire che tutto venga convertito in modo appropriato.

Quindi, ho bisogno di testare la migrazione sud e vedere se ha funzionato. Per fare ciò ho bisogno di caricare i dati del vecchio tipo User prima dell'esecuzione della migrazione. Come lo faccio?

risposta

7

Quando la suite di test viene eseguita tramite python manage.py test someapp, first django crea un database di test, quindi applica tutte le migrazioni in ordine, quindi esegue i test case. Pertanto, se l'obiettivo è testare la migrazione stessa, è necessario caricare i dati delle fixture prima di tale migrazione.

È possibile aggiungere una linea o due dispositivi di carico alla migrazione che applica le modifiche del modello solo per motivi di test, quindi rimuovere.

def forwards(self, orm): 
    from django.core import management 
    management.call_command('loaddata', 'myfixture.json') 
    ... your migration 

inoltre, è possibile aggiungere una condizione in qualche impostazione Django fatta, quindi non sarà necessario modificare il codice in seguito.

+0

Si noti che il caricamento di 'initial_data' in questo modo è una cattiva idea: dopo un po 'di tempo, si finirà per aggiungere nuove istanze di oggetti in' initial_data.json' che rischia di essere caricato prima della migrazione del modello. Testato e non approvato;). –