我正在尝试上传csv文件,然后解析成xml格式,但在保存它之前,“导入csv文件并将其保存为xml文件”之前,我已经使上传功能正常工作,并被正确保存;但是,我的问题是如何将上传的文件传递给解析为xml格式的函数。我正在使用django python
Model.py
from django.db import models
from django.urls import reverse
from .validators import validate_file_extension
# Create your models here.
class DataFile(models.Model):
title = models.CharField(max_length=250)
description = models.CharField(max_length=1000)
file = models.FileField()
def __str__(self):
return self.title + ' - ' + self.description + ' - ' + self.file这是我的form.py
from django import forms
from .models import DataFile
class FileForm(forms.ModelForm):
class Meta:
model = DataFile
fields = ['title', 'description', 'file' ]这是我的view.py
def importing(request):
form = FileForm(request.POST or None)
if request.method == 'POST':
form = FileForm(request.POST, request.FILES)
if form.is_valid():
#here is where the passing supose to be
form = csv2xml(request.FILES['file'])
form.save()
return HttpResponseRedirect('http://127.0.0.1:8000')
return render(request, 'import.html', { 'form': form })更新:我想将上传的文件传递给:函数:
def csv2xml(csv_file):
xml = dicttoxml.dicttoxml(csv_file)
return xml我希望将该文件传递给csv2xml函数,然后转换,然后将其保存为xml。
当我使用上面的方式将它传递给函数时,它说:
AttributeError at /importing
'InMemoryUploadedFile' object has no attribute 'save'发布于 2018-03-16 06:00:17
最好的方法是对save类的models.Model方法进行一些更改。在models.py中是这样的
class DataFile(models.Model):
title = models.CharField(max_length=250)
description = models.CharField(max_length=1000)
file = models.FileField()
def save(self, *args, **kwargs):
if self.file:
""" Do Whatever you wanna do with the upload file here """
super(DataFile, self).save(*args, **kwargs)这将对上传的文件进行必要的更改,然后将其保存到服务器上。
https://stackoverflow.com/questions/49310014
复制相似问题