【发布时间】:2018-01-21 11:40:19
【问题描述】:
我有一个 CSV 文件,其中包含要使用 Django 自定义管理命令中的自定义命令导入的数据。我正在使用 Python 2.7 和 Django 1.10。这是代码。
import csv
import argparse
from awards.models import Student, HomeRoom
from django.core.management.base import BaseCommand, CommandError
homeroom = 'HR 12C'
class Command(BaseCommand):
help = "Import students by homeroom."
def add_arguments(self, parser):
parser.add_argument('csvfile', nargs='+', type=argparse.FileType('r'))
def handle(self, *args, **options):
student_list = []
hr = HomeRoom.objects.get(name=homeroom)
with open(options['csvfile']) as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
student_list.append(Student(name=row["Student Name"], studentidnum=row["School ID"], homeroom=hr))
是的,homeroom 是硬编码的。我宁愿从文件名中提取该值(即“HR 12C.csv”),但我不知道该怎么做。但这不是真正的问题。当我使用以下命令运行上述代码时: python manage.py importcsv 'awards/12C.csv' 我收到以下错误:
File "/home/ssidollars/dollars/awards/management/commands/importcsv.py", line 18, in handle
with open(options['csvfile']) as csvfile:
TypeError: coercing to Unicode: need string or buffer, list found
我不知道我做错了什么。它似乎认为我正在传递一个列表,但是......我没有看到任何可能的列表。任何想法我做错了什么?
【问题讨论】: