我正在使用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'
答案 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)