У меня была проблема с руководством по Django, поэтому я задал вопрос здесь. Никто не знал ответа, но я в конце концов понял его с помощью Роберта .Кажется, 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()
.Мой вопрос таков: почему в моем пространстве имен datetime без * from datetime import *
.
Примечание. Первый вопрос: , что делает.Этот вопрос задает почему.
ОБНОВЛЕНИЕ: Вдруг это работает.С datetime.date.today()
И date.today()
.Мой вопрос остается тем не менее, почему date.today()
работает?Кажется, дата и время находятся в моем локальном пространстве имен, и я не помещаю их туда.Почему?