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’

Asked By: leora

||

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.

Answered By: Adam Vandenberg

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()
Answered By: rootart

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()
Answered By: Joe
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.