我的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会接受吗?
答案 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()