使用InteractiveConsole中的django

时间:2017-09-10 00:40:50

标签: python django django-models

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import datetime
from django.db import models
from django.utils import timezone


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

    def __str__(self):
        return self.question

    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    def __str__(self):
        return self.choice

我正在使用django(1.11)文档制作民意调查应用程序现在我正在编辑(民意调查/模型),因为根据文档显示我错误。

我的民意调查/模特对我来说是错误的。帮助!!

    Question.objects.all()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:\Python36\lib\site-packages\django\db\models\query.py", line 229, in __repr__
    return '<%s %r>' % (self.__class__.__name__, data)
  File "C:\Python36\lib\site-packages\django\db\models\base.py", line 589, in __repr__
    u = six.text_type(self)
  File "C:\Users\hp\mysite\polls\models.py", line 16, in __str__
    return self.question
AttributeError: 'Question' object has no attribute 'question'

2 个答案:

答案 0 :(得分:0)

__str__ Question模型中有一个拼写错误:

def __str__(self):
    return self.question_text
    #                 ^^^^^^

答案 1 :(得分:0)

正如Bear Brown回答你的那样,错误是你的函数类型__str__,他的建议将解决问题,但我会重新考虑Question中字段的名称。

正确的字段名称应仅为text而不是question_text,因为该字段已位于Question的域中。

想象一下这段代码

for question in Question.objects.all():
    print(question.question_text)

正如您所看到的,question作为text的前缀完全没必要。