2016-03-23 2 views
0

je peux obtenir mes informations des applications dans le shell:obtenir django.apps de shell, mais pas au script

In [1]: from django.apps import apps 

In [2]: info = apps.all_models  

In [3]: for item in info:   
    print(item) 
    ...:  
mailer 
auth 
analytics 
subscribe 
staticfiles 
contenttypes 
layout 
contact 

mais pas dans un script. le script se trouve dans le dossier du site principal, c'est-à-dire avec manage.py, alors que le fichier de paramètres est dans mysite/project/settings.py. Le script est juste à mysite, au-dessus du dossier du projet:

#!/usr/bin/env python 
# coding: utf-8 

import os, sys, subprocess, time, re, ast 
# This should be the directory that contains the directory containing settings.py 
# sys.path.add('/path/to/mysite') 
# os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") 

HOMEPATH = os.path.expanduser("~") 

PROJECT_PATH = "{}/work_projects/mysite".format(HOMEPATH) 

ENTRY_PATH = os.path.join(PROJECT_PATH, "project") 

MOMMY_PATH = os.path.join(PROJECT_PATH, "model_mommy") 

MOMMY_TESTPATH = os.path.join(MOMMY_PATH, "tests") 

sys.path.append(ENTRY_PATH) 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.project.settings") 

from django.apps import apps 

info = apps.all_models 

for item in info:   
    print(item) 

il n'y a pas de sortie, l'information est vide. Importer django.conf.settings et jouer avec les paramètres fonctionne. Pourquoi ne pas faire la même chose travailler dans ce script? Merci

Répondre

2

Vous manque probablement ce (je pense monsite ne devrait pas être dans la ligne de paramètres):

import os, sys 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings") 
import django 
django.setup() 

for item in django.apps.all_models: 
    print(item)