ImportError:无法导入名称Poll

时间:2013-11-28 07:51:47

标签: python django python-import

我已按照此tutorial中的所有步骤操作,但收到此错误。如何解决?

dyn-72-33-214-65:mysite mona$ python manage.py shell
Python 2.7.5 (default, Sep  2 2013, 05:24:04) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from polls.models import Poll, Choice
Traceback (most recent call last):
  File "<console>", line 1, in <module>
ImportError: cannot import name Poll

目录结构如下:

>>> quit()
dyn-72-33-214-65:mysite mona$ pwd
/Users/mona/data_mining/mysite
dyn-72-33-214-65:mysite mona$ ls
db.sqlite3  manage.py   mysite      polls
dyn-72-33-214-65:mysite mona$ cd polls/
dyn-72-33-214-65:polls mona$ ls
__init__.py admin.py    models.pyc  views.py
__init__.pyc    models.py   tests.py
dyn-72-33-214-65:polls mona$ cd ../mysite/
dyn-72-33-214-65:mysite mona$ ls
__init__.py settings.py urls.py
__init__.pyc    settings.pyc    wsgi.py

答案:错过了在models.py中添加这些行 来自django.db导入模型

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

3 个答案:

答案 0 :(得分:4)

如果您正好接受official tutorial,可能会出现在某些时候更改版本教程的情况。请记住,本教程的每个版本都可以略微抖动。

例如,在v1.7的教程中,它是:

from polls.models import Question, Choice

对于v1.6,它是

from polls.models import Poll, Choice

如果您在教程中间切换了版本,那么您应该检查models.py文件并查看您的类具有的名称。导入这些类名。例如,如果你有

from django.db import models

class MyQuestion(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

class MyChoice(models.Model):
    question = models.ForeignKey(Question)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

然后你应该相应导入:

>>> from polls.models import MyQuestion, MyChoice

答案 1 :(得分:1)

我在另一个帖子中发布了类似的答案。就我而言,当我遇到问题时,我使用了

来自projectname.polls.models import Poll,Choice

它适用于我的情况。我想我搞砸了创建目录(虽然在我快速审查期间看起来没问题但无法确认)

答案 2 :(得分:0)

我正在使用
from models import Poll, Choice
不是from polls.models import Poll, Choice
为我工作