将 CSV 文件中的数据存储到数据库中

2024-01-08

我有一个旅馆的 Django 模型,其中包含 FileUpload 字段之一,我将从该字段获取 CSV 文件并填充数据库,过去两天我一直在尝试搜索如何做到这一点,但无法正常工作 这如何将csv数据导入django模型 https://stackoverflow.com/questions/2459979/how-to-import-csv-data-into-django-models问题有效,但前提是我有文件的路径,并且我尝试了很多方法但没有成功。之后我也尝试更努力地搜索在Django中如何获取文件上传后的绝对路径? https://stackoverflow.com/questions/42544523/how-do-i-get-a-files-absolute-path-after-being-uploaded-in-django我看到了这个,但即使这样我也无法让它工作,因为它显示了一些错误

我使用了这个 URL 映射url(r'^test/$',views.FileUpload.as_view(),name="test")

但它显示了一些名称空间错误。 请告诉我该怎么做,如果你对我有一些建议,我该怎么重新开始,我真的很失落。 我想从用户那里获取文件,然后填充数据库

这个可以吗(如何将 .csv 文件中的数据传输到 django 中的 sqlite 数据库中? https://stackoverflow.com/questions/1882469/how-do-i-transfer-data-in-csv-file-into-my-sqlite-database-in-django/44343339?noredirect=1#comment75689625_44343339)就像我们可以创建一个带有接受 csv 的文件字段的表单,然后通过解析它来填充数据库,问题是我们无法对路径进行硬编码。那么我们应该怎样做呢。

EDIT views.py

from django.views import View
class FileUpload(View):
    def post(self, request):
        form = DocumentForm(request.POST, request.FILES)
        if form.is_valid():
            initial_obj = form.save(commit=False)
            data=initial_obj['document']
            with open((data),'rb') as csvfile:
                spamreader = csv.reader(csvfile)
                for row in spamreader:
                    _, created=Document.objects.get_or_create(
                    name=row[0],
                    description = row[1],
                    importance=row[2],
                    )

            initial_obj.save()
            form.save()
            return redirect('/')
        else:
            return render(request,'file_upload_form.html',{'form':form})

    def get(self, request):
        return render(request, 'file_upload_form.html', {'form': form,})

forms.py

class DocumentForm(forms.ModelForm):
    class Meta:
        model = Document
        fields = ('description', 'document', )

模型.py

class Document(models.Model):
    name=models.CharField(max_length=50,blank=True)
    description=models.CharField(max_length=255, blank=True)
    importance=models.CharField(max_length=10, default="High")
    document = models.FileField(upload_to='documents/')
    uploaded_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.description

我没有收到任何错误,但它没有将 CSV 文件中的数据保存到数据库中,而是将我重定向到必须完成上传的同一页面,并在文档字段中显示错误“此字段为必填”。

Updates: 我解决了这个问题更多细节here https://github.com/4rshdeep/csv2database_django


您可以轻松地覆盖clean()表单的方法,并将自定义数据内容保存到数据库中

 def clean(self):
    super(DocumentForm, self).clean()
    import csv
    with open((self.cleaned_data['file']), 'rb') as csvfile:
    spamreader = csv.reader(csvfile)
    for row in spamreader:
        // DO WHATEVER YOU WANT
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 CSV 文件中的数据存储到数据库中 的相关文章

随机推荐

  • 无法读取未定义的属性“包含”

    我是 JavaScript 新手 我正在尝试剖析嵌入的消息 这是我的代码 它运行良好几分钟 相应地工作 但不知道出了什么问题 bot on message message gt for var i 0 i lt message embeds
  • 尝试使用“nlmsg_free(skb_out)”释放 skb 时内核崩溃

    我正在开发一个内核模块 它通过 netlink 向用户空间发送消息 创建消息 要发送的消息 skb out nlmsg new msg size 0 发送第一条消息后和发送第二条消息之前 我尝试使用以下命令释放 skb outnlmsg f
  • 使用 jquery/javascript 单击切换

    我想单击一个表元素并让它在第一次单击时执行 x 操作 如果再次单击则执行 Y td class p img src person2 png td 这就是我刚才单击一下的 HTML 但我希望更改它 以便可以选择一个项目 然后如果再次单击取消选
  • Django Forms:如果选中布尔字段,则禁用字段

    这是我的表单的定义 class WorkflowForm forms Form new user forms BooleanField required False user ModelChoiceField queryset User o
  • Openlayers-3 强制刷新地图

    我有一个自定义样式 可以显示 隐藏地图上的功能 但是当应用它时 它不会激活 直到地图由于功能更新而刷新 但我需要它立即触发 我尝试了 map render 和 renderSync 但它们什么也没做 mapResize 似乎也没有执行任何操
  • System.Web 可以与具有完整框架的 ASP.Net Core 一起使用吗

    我们正在运行基于不同 Net 版本的多个站点 其中一个站点正在运行 Net 4 6 和 ASP Net MVC 5 xx 要使用 Razor 的新语法 我们希望升级此站点以使用 Net 4 6 和 ASP Net Core 我们在网站上使用
  • Flutter:多个小部件使用相同的 GlobalKey

    当我运行此代码时 我收到错误 Multiple widgets used the same GlobalKey 所以我可以解决这个问题 如何将密钥动态传递给 listview Builder 可以通过吗 这是我的代码的简化版本 Global
  • PHP:运行计划作业(cron 作业)

    我的网络酒店上有一个网站 我想在其上运行一些计划任务 您会推荐哪些方法来实现这一目标 到目前为止 我想到的是在每个页面的顶部包含一个脚本 然后让该脚本检查是否该运行该作业 这只是我正在思考的一个简单例子 if alreadyDone 0 t
  • 用清漆+正则表达式替换页面中的内容

    如果我希望我的清漆缓存服务器在提供或存储页面 vcl fetch 之前从后端替换页面内的内容 即 更改 div 上的类 该怎么做 我想使用简单的正则表达式来执行替换 因为我想象清漆本身就支持它 Varnish 本身不支持修改响应正文 为此
  • 为什么我们的查询会卡在 MySql 中的“Writing to net”状态?

    我们有很多疑问 select from tbl message 卡在 正在写入网络 状态 该表有 98k 行 问题是 我们甚至没有从我们的应用程序中执行任何类似的查询 所以我想问题是 什么可能会生成查询 以及为什么它会陷入状态 写入网络 我
  • 使用 JavaScript 禁用 iPhone 中的“Go”按钮

    我正在为 iPhone 创建一个小表单 并在该表单上进行 JavaScript 验证 当然由服务器验证支持 但这不是重点 作为此验证的结果 我动态启用 禁用提交按钮 除了屏幕键盘上的 Go 按钮不反映我拥有的唯一提交按钮的状态并且始终处于启
  • std::map 在炼金术中损坏了?

    以下代码测试以 std string 作为键的 std map 的使用 include
  • VS 2017命令行错误D8004

    我别无选择 我正在尝试在 Visual Studio 2017 Community 上使用 GoogleTest 但它给了我很多 警告 C4996 std tr1 警告 STL4002 非标准 std tr1 命名空间和仅 TR1 的机器已
  • Ruby 和 Rails Github 操作退出代码 16

    我正在尝试为新的 Rails 项目设置一个带有 Github 操作的持续集成工作流程 这是错误 2022 05 21T17 07 01 1242737Z Your bundle only supports platforms x86 64
  • 使用SIMD右移32位压缩负数

    我正在编写一些 SSE AVX 代码 并且有一个任务将打包的有符号 32 位整数除以 2 的补码 当值为正时 这种移位工作正常 但由于移位符号位 它会产生负值的错误结果 是否有任何 SIMD 操作可以让我进行移位并保留符号位的位置 谢谢 S
  • Android:SlidingDrawer在SurfaceView下消失

    我正在尝试在 FrameLayout 上创建一个包含 LinearLayout 内容的 SlidingDrawer 起初一切似乎都很好 我在屏幕底部找到了 SlidingDrawer 的句柄 但是 如果我开始向上拖动手柄并且内容开始显示 它
  • MacOS 虚拟输入设备

    如何在代码中创建虚拟 HID 设备 我试图避免编写内核扩展来完成此任务 但这似乎是唯一的方法 我需要能够创建所有类型的虚拟 HID 设备 并让一个应用程序在后台运行以向其提供事件 有没有办法在用户空间中做到这一点 或者我必须冒险进入内核空间
  • T-SQL、XQuery 无效列

    我正在学习 XQUERY 并试图完成我认为非常简单的事情 这是我的 T SQL 代码 DECLARE XML xml set xml
  • VueJS 在渲染数据之前等待 Apollo

    另一篇文章中的简单示例 new Vue el app data filters id issuedBy issuedTo items id 1234 issuedBy Operator issuedTo abcd efgh id 5678
  • 将 CSV 文件中的数据存储到数据库中

    我有一个旅馆的 Django 模型 其中包含 FileUpload 字段之一 我将从该字段获取 CSV 文件并填充数据库 过去两天我一直在尝试搜索如何做到这一点 但无法正常工作 这如何将csv数据导入django模型 https stack