1
我有一個CSV文件,我想用Django自定義管理命令中的自定義命令導入數據。我使用Python 2.7和Django 1.10。這是代碼。使用FileType和Django自定義管理命令?
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))
是的,教室是硬編碼的。我寧願從文件名(這是'HR 12C.csv'),但我不知道如何做到這一點的價值。但這不是真正的問題。當我用這個命令運行上面的代碼:蟒蛇manage.py importcsv「兩項大獎/ 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
我不知道我做錯了。它似乎認爲我認爲我通過了一個列表,但是...我沒有看到它可能的任何列表。任何想法我做錯了什麼?
謝謝,這是我需要什麼。我從來沒有用過argparse,這些例子讓我感到困惑,因此我不確定那裏發生了什麼。代碼執行完美。 – Jonathanb