首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将上传的文件解析为另一种格式,然后保存在django中

将上传的文件解析为另一种格式,然后保存在django中
EN

Stack Overflow用户
提问于 2018-03-15 22:06:59
回答 1查看 1.1K关注 0票数 0

我正在尝试上传csv文件,然后解析成xml格式,但在保存它之前,“导入csv文件并将其保存为xml文件”之前,我已经使上传功能正常工作,并被正确保存;但是,我的问题是如何将上传的文件传递给解析为xml格式的函数。我正在使用django python

Model.py

代码语言:javascript
复制
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

代码语言:javascript
复制
from django import forms
from .models import DataFile


class FileForm(forms.ModelForm):
    class Meta:
        model = DataFile
        fields = ['title', 'description', 'file' ]

这是我的view.py

代码语言:javascript
复制
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 })

更新:我想将上传的文件传递给:函数:

代码语言:javascript
复制
def csv2xml(csv_file):
    xml = dicttoxml.dicttoxml(csv_file)

    return xml

我希望将该文件传递给csv2xml函数,然后转换,然后将其保存为xml。

当我使用上面的方式将它传递给函数时,它说:

代码语言:javascript
复制
AttributeError at /importing
'InMemoryUploadedFile' object has no attribute 'save'
EN

回答 1

Stack Overflow用户

发布于 2018-03-16 06:00:17

最好的方法是对save类的models.Model方法进行一些更改。在models.py中是这样的

代码语言:javascript
复制
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)

这将对上传的文件进行必要的更改,然后将其保存到服务器上。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49310014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档