【发布时间】:2010-12-17 06:24:08
【问题描述】:
I had a problem with the Django tutorial so I asked a question here. 没有人知道答案,但我最终在Robert 的帮助下找到了答案。 Python 似乎将import datetime 视为与from datetime import * 相同。
工作代码:
import datetime
from django.db import models
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __unicode__(self):
return self.question
def was_published_today(self):
return self.pub_date.date() == date.today()
不工作的代码:(唯一的区别是导入语句和最后一行。)
from django.db import models
import datetime
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __unicode__(self):
return self.question
def was_published_today(self):
return (self.pub_date() == datetime.date.today())
编辑:我想我不够清楚。该代码产生完全相同的回溯,最后一行是return (self.pub_date.date() == datetime.date.today())我最初忘记添加.date()是不是我要问的错误。
无效代码产生的回溯:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/myDir/mySite/polls/models.py", line 11, in was_published_today
return (self.pub_date() == datetime.date.today())
TypeError: 'datetime.datetime' object is not callable
到底为什么要这样做?
我的问题是不关于忘记.date()。我的问题是:为什么没有我使用from datetime import *,我的命名空间中有日期时间。
注意:第一个问题是问什么它在做什么。这个问题问为什么。
更新:突然就可以了。与datetime.date.today() AND date.today()。我的问题仍然存在,为什么date.today() 有效?似乎 datetime 在我的本地命名空间中,而我没有放在那里。为什么?
【问题讨论】:
-
你的 Python 安装肯定搞砸了。
-
第二种情况下的
self.pub_date()不应该是self.pub_date.date(),就像第一种情况一样吗? -
这真的很奇怪。当我只做
import datetime; datetime.date.today()而没有任何 Django 东西时,工作正常。 -
我猜 self.pub_date 是不可调用的。
-
@Alok:这是代码不起作用工作的原因之一。
标签: python django django-models module import