2011-11-02 10 views
5

¿En qué punto se crean nuevos ContentTypes y cómo puedo activarlo yo mismo?Django: ¿cómo activar la creación de ContentTypes para nuevos modelos?

Tengo un montón de migraciones del sur, la creación de nuevos modelos y tal. Una vez hecho esto, hay una migración de datos final que asigna los permisos para estos nuevos objetos a cualquier grupo que ya tenga permisos relacionados. (Por el presente, los 'Permisos relacionados' los elijo para que tengan sentido dentro de la aplicación)

Sin embargo, los ContentTypes para los modelos recién creados aún no están disponibles cuando ejecuto esa migración de datos. Lo son cuando ejecuto todas las demás migraciones primero y solo luego ejecuto la migración de datos adicional. Es decir. ejecuta el comando dos veces. Pero hacer ese parche manual no es un escenario factible en mi caso.

Así que me gustaría activar manualmente la creación de ContentTypes para cualquier modelo nuevo justo antes de ejecutar mi migración de datos. ¿Cómo se hace esto?

+0

¿Cómo está obteniendo sus ContentTypes? [get_for_model] (https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#django.contrib.contenttypes.models.ContentTypeManager.get_for_model) normalmente funcionaría. – Tobu

+0

para ct in orm ['contenttypes.contenttype']. Objects.filter (app_label = 'client') Pero creo que simplemente podría ser explícito al respecto; buena sugerencia –

Respuesta

7

Debe usar ContentType.objects.get_for_model(), que crea las instancias ContentType bajo demanda (agrega algo de almacenamiento en caché también).

+0

Esto tiene el inconveniente de no poder escribir el caso general ("todos los tipos de contenido para la aplicación tal y tal") pero me ayuda a solucionar este problema. Gracias –

Cuestiones relacionadas