2011-11-02 7 views
5

A che punto vengono creati nuovi ContentTypes e come posso attivarlo da solo?Django: come attivare la creazione di ContentTypes per i nuovi modelli?

Ho un sacco di migrazioni verso sud, creando nuovi modelli e così via. Al termine, viene eseguita una migrazione finale dei dati che assegna le autorizzazioni per questi nuovi oggetti a tutti i gruppi che dispongono già di autorizzazioni correlate. (Con la presente, le "autorizzazioni correlate" vengono selezionate per dare un senso all'applicazione)

Tuttavia, i ContentTypes per i modelli appena creati non sono ancora disponibili quando eseguo tale datamigration. Sono quando eseguo prima tutte le altre migrazioni e solo dopo eseguo la datamigration aggiuntiva. Cioè eseguire il comando due volte. Ma fare quella patch manuale non è uno scenario fattibile nel mio caso.

Quindi mi piacerebbe attivare manualmente la creazione di ContentTypes per tutti i nuovi modelli subito prima di eseguire la mia datamigration. Come è fatto?

+0

Come stai ricevendo il tuo ContentTypes? [get_for_model] (https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#django.contrib.contenttypes.models.ContentTypeManager.get_for_model) normalmente funzionerebbe. – Tobu

+0

per ct in orm ['contenttypes.contenttype']. Objects.filter (app_label = 'client') Ma suppongo che potrei semplicemente essere esplicito a riguardo; buon suggerimento –

risposta

7

È necessario utilizzare ContentType.objects.get_for_model(), che crea le istanze ContentType su richiesta (aggiunge anche del caching).

+0

Questo ha l'inconveniente di non essere in grado di scrivere il caso generale ("tutti i tipi di contenuto per l'app così e così") ma mi aiuta a risolvere questo problema. Grazie –

Problemi correlati