2010-10-30 13 views
7

He cometido un error al crear mi propio modelo de usuario y estoy tratando de recuperarlo.Cargando un dispositivo antes de una migración al sur ejecutar

He creado una migración hacia el sur que copia mis viejos modelos de usuario y crea django.contrib.auth.models.User models. Para garantizar que mis usuarios actuales no se quedan a la intemperie, creé un montón de unittest para asegurarme de que todo se convierta de manera adecuada.

Por lo tanto, tengo que probar la migración al sur y ver si funcionó. Para hacer eso, necesito cargar datos del antiguo tipo de usuario antes de que se ejecute la migración. ¿Cómo puedo hacer eso?

Respuesta

7

Cuando el conjunto de pruebas se ejecuta a través de python manage.py test someapp, primero django crea una base de datos de prueba, luego aplica todas las migraciones en orden y luego ejecuta los casos de prueba. Por lo tanto, si el objetivo es probar la migración en sí, deberá cargar los datos del dispositivo antes de esa migración.

Puede agregar una línea o dos dispositivos de carga a su migración que aplique los cambios de su modelo solo por el motivo de la prueba, luego elimine.

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

También, se puede agregar una condición en un cierto ajuste Django compuesta, entonces usted no tendrá que editar el código más tarde.

+0

Tenga en cuenta que cargar 'initial_data' de esa manera es una mala idea: después de un tiempo, terminará agregando nuevas instancias de objetos en' initial_data.json' que corre el riesgo de cargarse antes de la migración del modelo. Probado y no aprobado;). –

Cuestiones relacionadas