views.py
def contact_list(request):
importform = ImportExcelForm()
if request.method == 'POST':
importform = ImportExcelForm(request.POST, request.FILES)
if importform.is_valid():
input_excel = request.FILES['input_excel']
book = xlrd.open_workbook(file_contents=input_excel.read())
excel_parser= ExcelParser()
success, log = excel_parser.read_excel(request.FILES['input_excel'] )
return redirect('/member/incident-types/')
else:
importform = ImportExcelForm()
return render(request, 'incident/contact_list.html',
{
'about_menu': True,
'ImportExcelForm':importform,
})
forms.py
class ImportExcelForm(Form):
input_excel = forms.FileField()
user = forms.ModelChoiceField(queryset=Contacts.objects.all())
def save(self):
records = xls.reader(self.cleaned_data["input_excel"])
for line in records:
input_data = Data()
input_data.place = self.cleaned_data["user"]
input_data.name = line[1]
input_data.number = line[2]
input_data.save()
models.py
class Contacts(models.Model):
user = models.ForeignKey(User, null=True)
name = models.CharField('Name', max_length=100)
number = models.IntegerField()
这是导入xls文件,读取和写入xls文件中的名称和联系人号码到数据库字段。我没有收到任何错误,但它没有解析数据库中的数据。
答案 0 :(得分:0)
我不确定你期待在这里发生什么。你的表单保存方法(假设它正确缩进,而不是正确缩进)迭代self.cleaned_data["input_excel"]
的内容,这是一个文件名,而不是文件。但无论如何,您的视图在任何时候都不会调用save方法。它所做的是使用一组完全不同的Excel解析函数,将它们读入一对局部变量,然后对函数返回时超出范围的那些变量的内容什么都不做。
我建议你考虑一下你的逻辑流应该是什么,写下来,然后编写代码来匹配它。