从csv导入Django 1.9日期对象

时间:2016-04-18 18:02:53

标签: python django csv

我的csv的日期格式为mm / dd / yyyy

我编辑了settings.py以包含:

DATE_INPUT_FORMATS = [
    '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y'] 
    # '2006-10-25', '10/25/2006', '10/25/06'

将csv行分配给db模型时,出现此错误:

TypeError: an integer is required (got type str)

这是我的代码:

import os
import sys
import csv
import django
from datetime import date as django_date

sys.path.append("/home/nerdbox2/django_/logbook/")
os.environ["DJANGO_SETTINGS_MODULE"] = "logbook.settings"
django.setup()

from flights.models import Flight

f = Flight()

reader = csv.reader(open('path to file'))


for row in reader: #reads row from csv


f.date = django_date(row[0])
f.aircraft = row[1]
f.save()

如果我这样做:f.date = django_date(int(row[0]))

我得到:ValueError: invalid literal for int() with base 10: 'date'

我认为问题在于,由于输入格式为yyyy/mm/dd'/'字符无法转换为int(),但如何将字符串转换为日期对象Django会接受吗?

1 个答案:

答案 0 :(得分:1)

当您想要解析单个日期字符串时,它与django无关。您需要使用strptime将datetime字符串转换为datetime对象:

import datetime
f.date = datetime.datetime.strptime('2016/01/01', '%Y/%m/%d').date()

在你的情况下,它将是:

import datetime
f.date = datetime.datetime.strptime(row[0], '%Y/%m/%d').date()