2011-08-28 2 views
2

저는 django 피드 프레임 워크를 사용하고 있습니다.장고 피드 프레임 워크 : 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' 
를이 내 feeds.py에있는 것입니다

답변

15

def item_pubdate의 요구 사항은 https://docs.djangoproject.com/en/dev/ref/contrib/syndication/을 참조하십시오. 이는 대부분의 피드 형식이 기술적으로 전체 게시 날짜를 게시 날짜로 요구하기 때문입니다.

피드에 item_pubdate을 정의하는 함수는 객체를 반환해야하며 datetime.date 객체는 반환해야합니다. 차이점은 물론 개체가 날짜 정보 이외에 특정 시간을 포함 할 수 있다는 것입니다.

따라서 models.DateField 대신 models.DateTimeField을 사용해야합니다. -

당신이 models.DateField를 사용하여 부착하는 경우, 당신은 당신의 피드 클래스를 가질 수

는 변환을 수행합니다

from datetime import datetime, time 

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

을 그리고 그 날짜는있는 contrib 있도록 날짜로 변환을하셔야합니다. 신디케이션은 그것을 받아들입니다.

+0

이미 데이터베이스에 많은 양의 데이터가 있으므로 모델을 변경하는 것이 위험 할 수 있습니다. 해결 방법이 있습니까? – nixnotwin

+0

위의 답변에 대한 해결 방법을 추가했습니다. 그게 작동하는지 알려주세요. –

+0

잘 작동했습니다. – nixnotwin

1

장고는 date 대신 datetime이 필요합니다. 여기에 비밀리에하는 방법이 있습니다 :

import datetime 

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