Django feed框架:tzinfo错误

时间:2011-08-28 07:28:15

标签: django datetime feeds

我正在使用django feed框架。这就是我在feeds.py中的内容:

def item_pubdate(self, item):
    return item.posted

这就是我在models.py中的Blog类中所拥有的:

posted = models.DateField(db_index=True, auto_now_add=True)

我收到此属性错误:

'datetime.date' object has no attribute 'tzinfo'

2 个答案:

答案 0 :(得分:16)

有关def item_pubdate的要求,请参阅https://docs.djangoproject.com/en/dev/ref/contrib/syndication/。这是因为大多数Feed格式在技术上需要一个完整的时间戳作为发布日期。

您为Feed定义item_pubdate的函数必须返回python datetime.datetime对象,而不是datetime.date对象。当然,不同之处在于除了日期信息之外,对象还可以包含特定时间。

因此,您必须使用models.DateTimeField代替models.DateField

-

如果您因使用models.DateField而陷入困境,那么您可以让Feed类进行转换:

from datetime import datetime, time

def item_pubdate(self, item):
    return datetime.combine(item.posted, time())

这应该将你的日期转换为日期时间,以便contrib.syndication接受它。

答案 1 :(得分:1)

Django期待datetime而不是date。这是一种隐藏它的方法:

import datetime

def item_pubdate(self, item):
    return datetime.datetime(item.posted.year, item.posted.month, item.posted.day)