Django 1.9教程__str __()无效

时间:2016-02-01 17:51:48

标签: python django python-3.x django-1.9

我正在尝试使用Win 10 os和Python 3.5的Django 1.9教程,Django版本是1.9。我已在“问题”和“选择”中成功创建并存储了值。在此之后,我根据教程django tutorial 2使用__str__()更改了民意调查/ model.py。我收到了这个错误:

>>> from polls.models import Question, Choice
>>> Question.objects.all()
Traceback (most recent call last):
  File "C:\newenv\lib\site-packages\django\core\management\commands\shell.py", line 69, in handle
    self.run_shell(shell=options['interface'])
  File "C:\newenv\lib\site-packages\django\core\management\commands\shell.py", line 61, in run_shell
    raise ImportError
ImportError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:\newenv\lib\site-packages\django\db\models\query.py", line 237, in __repr__
    return repr(data)
  File "C:\newenv\lib\site-packages\django\db\models\base.py", line 459, in __repr__
    u = six.text_type(self)
  File "C:\newenv\mysite_new\polls\models.py", line 8, in __str__
    return self.question_text
AttributeError: 'Question' object has no attribute 'question_text'

我的民意调查\ models.py是:

from django.db import models

class Question(models.Model):
    # ...
    def __str__(self):
        return self.question_text

class Choice(models.Model):
    # ...
    def __str__(self):
        return self.choice_text

3 个答案:

答案 0 :(得分:3)

您的问题模型中很可能没有question_text字段。您添加__str__方法定义时可能已将其删除。

检查你是否有这个:

class Question(models.Model):
    question_text = models.CharField(max_length=200) # <--- Double check you have this

    def __str__(self):
        return self.question_text

答案 1 :(得分:0)

如果您遵循Django文档,那么结尾处有些错字。只需重做模型零件,然后运行makemigration并迁移cmd。它应该工作。 我遇到了同样的问题,然后我仅复制并粘贴了Django文档中的代码,它就起作用了。

答案 2 :(得分:0)

执行此操作。

def __repr__ (self):
    return self.title

重新启动外壳程序/会话。

然后检查。