Tengo problemas para cargar los dispositivos Django en mi base de datos MySQL debido a conflictos de tipo de contenido. Primero probé vertido los datos sólo de mi aplicación como esta:Problemas con los tipos de contenido al cargar un dispositivo en Django
./manage.py dumpdata escola > fixture.json
pero seguí recibiendo faltante problemas clave externa, porque mi aplicación "escola" utiliza las tablas de otras aplicaciones. Seguí añadiendo aplicaciones adicionales hasta que llegué a esto:
./manage.py dumpdata contenttypes auth escola > fixture.json
Ahora el problema es el siguiente violación de restricción cuando intento cargar los datos como un accesorio de la prueba:
IntegrityError: (1062, "Duplicate entry 'escola-t23aluno' for key 2")
Parece que el problema es que Django está intentando recrear dinámicamente los tipos de contenido con diferentes valores de clave primaria que entran en conflicto con los valores de las claves primarias del dispositivo. Esto parece ser el mismo que el error documentado aquí: http://code.djangoproject.com/ticket/7052
El problema es que la solución recomendada es volcar la aplicación contenttypes que ya estoy haciendo? ¿Lo que da? Si hace alguna diferencia, tengo algunos permisos de modelo personalizados como se documenta aquí: http://docs.djangoproject.com/en/dev/ref/models/options/#permissions
yo estaba corriendo en esto también, la reposición de los ContentTypes aplicación trabajó para mí como bien. ¡Gracias por el consejo! – Beau
¿Cómo los reinició? En la clase de caso de prueba? Dame un ejemplo, por favor –
No uso accesorios para pruebas unitarias, generalmente creo datos de prueba usando el ORM en un método setup() porque es más fácil mantener la sincronización con las pruebas. Así que nunca tuve que hacer esto en una clase TestCase, aunque estoy seguro de que si hurgas en el código de la clase TestCase de Django, puedes averiguar cómo hacer un reinicio después de syncdb y antes de que se cargue el dispositivo en una subclase. Para mí, era solo "./manage.py reset contenttypes" en un script bash anterior a "./manage.py loaddata my_fixture". –