python – django: why am I getting this error: AttributeError: 'method_descriptor' object has no attribute 'today'?
Question:
I have the following python code:
from django.db import models
from datetime 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.date() == datetime.date.today()
In a python shell, I am trying to run:
p = Poll.objects.get(pk=1)
p.was_published_today()
The first line works fine but the second line gives me this error:
AttributeError: ‘method_descriptor’ object has no attribute ‘today’
Answers:
You probably want “import datetime”, not “from datetime import datetime”.
“date” is a class on the datetime module, but it is also a method on the “datetime.datetime” class.
You need do like this one (ipython output)
In [9]: datetime.today().date()
Out[9]: datetime.date(2011, 2, 5)
So need to be
def was_published_today(self):
return self.pub_date.date() == datetime.today().date()
The top answer is correct, but if you don’t want to import all of datetime you can write
from datetime import date
and then replace
datetime.date.today()
with
date.today()
I have the following python code:
from django.db import models
from datetime 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.date() == datetime.date.today()
In a python shell, I am trying to run:
p = Poll.objects.get(pk=1)
p.was_published_today()
The first line works fine but the second line gives me this error:
AttributeError: ‘method_descriptor’ object has no attribute ‘today’
You probably want “import datetime”, not “from datetime import datetime”.
“date” is a class on the datetime module, but it is also a method on the “datetime.datetime” class.
You need do like this one (ipython output)
In [9]: datetime.today().date() Out[9]: datetime.date(2011, 2, 5)
So need to be
def was_published_today(self): return self.pub_date.date() == datetime.today().date()
The top answer is correct, but if you don’t want to import all of datetime you can write
from datetime import date
and then replace
datetime.date.today()
with
date.today()