2011-01-16 2 views
1

bonjour
J'ai une erreur inconnue lors de la création d'une classe de modèle (vérifiez le code ci-dessous). im suivant le tutoriel sur le site officiel django, mais cela ne fonctionne pas pour une raison quelconque, et je me suis battu dessus pendant un certain temps, mais sans résultats. Y at-il quelque chose de mal avec ce que je fais?Nouveau sur django: Avoir un bug lors de la création de modèles

>>> class a(models.Model): 
...  pass 
... 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Python27\lib\site-packages\django-1.1.2-py2.7.egg\django\db\models\base.py", line 52, in __new__ 
    kwargs = {"app_label": model_module.__name__.split('.')[-2]} 
IndexError: list index out of range 
>>> 
+0

Où trouve-t-on dans le tutoriel django une classe dont le nom de classe commence par un 'a' minuscule? – miku

+0

dans le tutoriel c'est (Personne) pas (a), mais cela ne fera pas beaucoup différent .. nom de classe n'est pas le problème, c'est avec le (models.Model). –

Répondre

1

Je pense que vous ne devriez pas définir vos modèles interpréteur de ligne de commande, mais utiliser le fichier d'application nommée models.py que l'intervenant précédent a dit . Lorsque django traite votre modèle, il essaie d'analyser le nom de l'application du modèle. Dans votre cas, le modèle n'a aucune application. Placez simplement vos modèles dans le fichier myproject/myapplication/models.py, puis vous pourrez créer des instances de modèles dans l'interpréteur de ligne de commande.

3

Le module contenant vos modèles doivent être nommés myapp.models du point de vue de l'interpréteur Python. Cette erreur signifie qu'il se résout à models. Tout d'abord, le module Python contenant ce modèle doit se trouver à l'intérieur d'un Django application folder qui se trouve sur le PYTHONPATH. Essayez d'utiliser python manage.py startapp comme expliqué dans le didacticiel.

Si le module de modèle est définitivement dans un dossier d'application, assurez-vous que le dossier d'application lui-même ne fait pas partie du PYTHONPATH, uniquement le dossier de projet qui le contient.

Pour aider à clarifier, voici le contexte de l'erreur dans la source de django:

 # Figure out the app_label by looking one level up. 
     # For 'django.contrib.sites.models', this would be 'sites'. 
     model_module = sys.modules[new_class.__module__] 
     kwargs = {"app_label": model_module.__name__.split('.')[-2]} 
Questions connexes