2014-09-26 6 views
3

장고 초보자입니다. 문자열 타임 스탬프가있는 SQLite 데이터베이스 용 Django 모델을 만들고 있습니다. 2014-09-23T18 : 43 : 26.692Z. 궁극적으로 Django의 필터링 엔진을 strftime 대신에 사용하고 싶기 때문에 ISO 문자열에서 DateTimeField 객체를 생성하기를 원합니다. 나는이Django 모델 DateTimeField는 ISO8601 타임 스탬프 문자열

startTime = models.DateTimeField(db_column='startTime') 

같은 원시 DB 필드에 DateTimeField를 선언하려고하면 오류가 발생합니다 : '유니 코드'개체가 다음 내가 뒷조사를하고 시도에는 속성 'isoformat'

이 없습니다 코드 :

startTime = models.DateTimeField(dateutil.parser.parse(models.TextField(db_column='startTime')) 

하지만 지금은 오류가 AttributeError이 '텍스트 필드'객체는에는 속성이 없습니다 '읽기'. 내가 뭘 잘못하고 있니? 이것이 올바른 접근법일까요?

+1

django의 ORM에는 매우 강력한 날짜 조작 지원 기능이 있습니다. 나는 그것을 바꾸지 않을 것이다. 생각하고있는 특정 사항이있는 경우 질문을 편집하여 표준 방법이 있는지 확인하십시오. – karthikr

답변

11

아무도이 대답에 귀찮게하지 않았고 Google 검색의 상단에 나타 났으므로 여기에 몇 가지 추가 검색을 저장하는 방법이 있습니다. 장고의 자체 dateparse 모듈이 작업에 가장 적합하다고 언급하고 ISO8601 및 기타 여러 형식을 파이썬의 datetime.datetime 객체. 또한 시간대를 인식하므로 Django 프로젝트에 이상적입니다.

from django.utils import dateparse 

x = '2014-09-23T18:43:26.692Z' 
y = dateparse.parse_datetime(x) 
print y 

그리고 짜잔 ..!

2014-09-23 18:43:26.692000+00:00 
0

Django 1.11에서 보이는 것처럼 DateTimeField에 ISO 형식 문자열을 할당 할 수 있습니다. 다음과 같이 보여줍니다.

Lesson.objects.create(starttime='2017-04-20T12:01:00.000Z', 
         endtime ='2017-04-20T13:01:00.000Z') 
+0

장고 1.11.3,이 작동하지 않았다. – jonathanglima