我需要上傳並讀取CSV然後保存到數據庫。我是初學者,下面是我使用'django-adapters'取得的成就(http://django-adaptors.readthedocs.org/en/latest/index.html)。我知道它不是很多, M只是這樣做,以瞭解更多:)Django閱讀/上傳CSV
我在我的代碼的視圖位於掙扎(下)。我不知道如何上傳,然後將文件讀入CodeCSvModel()函數?任何人都可以解釋嗎?非常感謝。 :)
views.py
from django.template import RequestContext
from django.shortcuts import render_to_response
from web.forms import codeUploadForm
from web.csvTools import CodeCSvModel
def codeImport(request):
# If we had a POST then get the request post values.
if request.method == 'POST':
form = codeUploadForm(request.POST, request.FILES)
# handle_uploaded_file(request.FILES['file'])
====[HELP HERE]=====
#form = codeUploadForm(request.POST)
CodeCSvModel.import_from_file(form['file'])
else:
form = codeUploadForm()
context = {'form':form}
return render_to_response('import.html', context, context_instance=RequestContext(request))
forms.py
class codeUploadForm(forms.Form):
file = forms.FileField()
place = forms.ModelChoiceField(queryset=Incentive.objects.all())
csvTool.py
from datetime import datetime
from adaptor.fields import *
from adaptor.model import CsvModel, CsvDbModel, ImproperlyConfigured,\
CsvException, CsvDataException, TabularLayout, SkipRow,\
GroupedCsvModel, CsvFieldDataException
from web.models import *
class CodeCSvModel(CsvModel):
codeid = CharField()
remotecode = CharField()
active = BooleanField()
created = DateField()
modified = DateField()
incentiveid = CharField()
class Meta:
delimiter = ";"
dbModel = Code
你看過[文檔](https://docs.djangoproject.com/en/dev/topics/http/file-uploads/)嗎?你遇到的問題究竟是什麼?看起來你幾乎在某處 - 使用'request.FILES'來獲取文件數據。 – Iguananaut
是的,我認爲我幾乎在那裏與文件= request.FILES ['文件']但這似乎是錯誤的,如果它不是form.FILES ['文件']作爲使用請求繞過所有形式的人口。或者我錯過了什麼。 – Prometheus
好吧我想我在那裏只是我對發生了什麼事的瞭解。這工作文件= request.FILES ['文件'],然後CodeCSvModel.import_from_file(文件)但是...我不明白的是它上傳的地方? – Prometheus