Search code examples
pythondjangopython-3.xdjango-1.9

Django 1.9 tutorial __str__ () not working


I am trying Django 1.9 tutorial with Win 10 os and Python 3.5 and Django version is 1.9. I have successfully created and stored values in "Question" and "Choice". After this when i have changed polls/model.py with __str__() as per tutorial django tutorial 2. I am getting this error:

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

my polls\models.py is:

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

Solution

  • You most likely do not have question_text field in your Question model. You may have deleted it when you added the __str__ method definition.

    Check that you have this:

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