2011-08-28 70 views
2

我正在使用django feed框架。這是我在我的feeds.py:Django feed框架:tzinfo錯誤

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

這是我在我的博客類models.py:

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

而且我得到這個屬性錯誤:

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

回答

15

請參閱https://docs.djangoproject.com/en/dev/ref/contrib/syndication/要求def item_pubdate。這是因爲大多數Feed格式技術上都需要一個完整的時間戳作爲發佈日期。

您爲訂閱源定義item_pubdate的函數必須返回一個python datetime.datetime對象,而不是datetime.date對象。當然,除了日期信息之外,對象還可以包含特定的時間。

因此,您必須使用models.DateTimeField而不是models.DateField

-

如果您使用的是models.DateField卡,那麼你可以有你的飼料類做轉換:

from datetime import datetime, time 

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

,並應讓您的日期轉換爲datetime,這樣的contrib。辛迪加接受它。

+0

我已經在數據庫中有很多數據,所以改變模型會有風險。有沒有解決辦法? – nixnotwin

+0

剛剛爲上述答案添加了一個解決方法。讓我知道這是否有效。 –

+0

它運作良好。 – nixnotwin

1

Django期待datetime而不是date。這裏有一種方法來隱藏它:

import datetime 

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