我使用Django构建网站,我想创建一个功能,用户通过Excel工作表可以上传信息并填充数据库。所以我安装Django的Excel的包,并按照例如:使用django-excel通过Excel工作表上传数据
settings.py:
FILE_UPLOAD_HANDLERS = ("django_excel.ExcelMemoryFileUploadHandler",
"django_excel.TemporaryExcelFileUploadHandler")
urls.py:
url(r'^import_sheet/', views.import_sheet, name="import_sheet"),
views.py:
class UploadFileForm(forms.Form):
file = forms.FileField()
def upload(request):
if request.method == "POST":
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
filehandle = request.FILES['file']
return excel._make_response(filehandle.get_sheet(),"xslx",file_name="download")
else:
form = UploadFileForm()
return render(request,'upload_form.html',{
'form': form,
'title': 'Excel file upload',
'header': 'Please choose a valid excel file'
})
def import_sheet(request):
if request.method == "POST":
form = UploadFileForm(request.POST,
request.FILES)
if form.is_valid():
request.FILES['file'].save_to_database(
model= quote_input,
mapdict= ["value_date", "value", "type", 'name'])
return HttpResponse("OK")
else:
return HttpResponseBadRequest()
else:
form = UploadFileForm()
return render(
request,
'upload_form.html',
{'form': form})
models.py:
class quote_input(models.Model):
value_date = models.DateField()
value = models.FloatField()
type = models.TextField(max_length=254)
name = models.TextField(max_length=254)
# link
fund = models.ForeignKey(Fund)
benchmark = models.ForeignKey(Benchmark)
factor = models.ForeignKey(Factors)
stress_factor = models.ForeignKey(Stress_Factors)
我得到了一个OK(HttpResponse对象),但是当我看着数据库,我有没有上传。
有人有同样的问题吗?或者可以提供另一个我可以使用的例子?另一种方法?
另一个问题:在django-excel文档中,有一个关于函数“choice_func”的引用,它被定义为自定义格式化函数。任何人都可以提供有关此功能的更多信息
有许多的缩进问题与您的代码。请修复它们,以便我们可以帮助您。 – 2ps
另外,你的'quote_input'类在哪里? – 2ps
我对缩进问题表示歉意。 –