Django 1.9 教程 __str__ () 不工作

Django 1.9 tutorial __str__ () not working

我正在使用 Win 10 os 和 Python 3.5 尝试 Django 1.9 教程,Django 版本是 1.9。我已在 "Question" 和 "Choice" 中成功创建和存储值。在此之后,当我根据教程 django tutorial 2 将 polls/model.py 更改为 __str__() 时。我收到此错误:

>>> 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'

我的 polls\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

您的问题模型中很可能没有 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

如果您正在关注 Django 文档,那么您这边有一些错字。只需重做模型部分和 运行 makemigration 和 migrate cmd。它应该工作。 我遇到了同样的问题,然后我只是复制并粘贴了 Django 文档中的代码并且成功了。

这样做。

def __repr__ (self):
    return self.title

重新启动 shell/session。

然后检查。

我也遇到了同样的问题,但后来我检查了我忘记在 __str__

中添加双引号而不是单引号 _