Django:API中的自定义方法调用返回false

时间:2018-04-21 19:21:22

标签: python django python-3.x

我是Django的初学者,正在做这个教程:https://docs.djangoproject.com/en/2.0/intro/tutorial02/但是我被困在他们教你如何使用API​​的部分(向下滚动,直到你到达玩API < / strong> part):

>>> q = Question.objects.get(pk=1)
>>> q.was_published_recently()
False

这是完整的源代码(models.py):

from django.db import models
import datetime
from django.utils import timezone

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

    def __str__(self):
        return self.question_text


    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_text

起初我觉得也许这些功能之间的空间不够,所以我试图解决它,当这不起作用我复制并粘贴了确切的代码,有人可以请告诉我出了什么问题以及如何解决这个问题?提前谢谢!

Python版本:3.5

操作系统:Linux Mint Cinnamon

2 个答案:

答案 0 :(得分:1)

我不太明白你遇到了什么麻烦。

q.was_published_recently()应该真正归还true吗?或者你是否面临某种错误?

尝试在return语句之前打印出pub_date,以验证该日期实际是什么。

答案 1 :(得分:0)

我建议您尝试打印Question实例的字段。

>>> q = Question.objects.get(pk=1)
>>> q.question_text
'here will be the text of your question instance'
>>> q.pub_date
'here will be the date and time of your question instance'
>>> q.was_published_recently()
False

通过这种方式,您可以查看Question个实例设置的日期和时间,这可以清除您的方法was_published_recently返回TrueFalse的原因。