python - django: why am I getting this error: AttributeError: 'method_descriptor' object has no attribute 'today'?
Andrew Henderson
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'
3 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.
1The top answer is correct, but if you don't want to import all of datetime you can write
from datetime import dateand then replace
datetime.date.today()with
date.today() 2 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()