2013-07-29 26 views
9

Desidero sovrascrivere i modelli di un'app esterna (allauth, installata nei pacchetti del sito). Sfortunatamente nessun consiglio che ho letto ha funzionato. ho aggiunto il seguente al mio settings.py:Sovrascrivi modelli di app esterna in Django

PROJECT_ROOT = os.path.normpath(os.path.dirname(os.path.abspath(__file__))) 
TEMPLATE_DIRS = (os.path.join(PROJECT_ROOT, 'templates', 'allauth')) 

e copiati tutti i modelli (this content) per my_project_dir/templates/allauth. Ma quando riavvio il server e ricarico la pagina ottengo solo i modelli resi dall'app originale allauth nei pacchetti del sito, non i miei modelli personalizzati. Qualche suggerimento?

risposta

7

Il modo tendo a capire cosa sta succedendo (con DEBUG set per True), è quello di avere una visione il rendering di un modello che non esisteva, e guardare l'elenco delle posizioni Django ha cercato di caricare i modelli da (che sarà incluso nell'output della pagina di errore).

Quali modelli tentano di rappresentare le viste? Se stanno cercando di eseguire il rendering allauth/foo.html, allora dovrai aggiungere my_project_dir/templates all'impostazione TEMPLATE_DIRS, non my_project_dir/templates/allauth.

27

Controllare l'ordine INSTALLED_APPS, verrà eseguito il rendering del primo modello corrispondente.

Con questo in mente si può semplicemente aggiungere il modello sotto lo stesso percorso in un'app personalizzata.