Django-csv.reader和save()/ update

时间:2019-01-24 09:08:38

标签: python django csv file-upload

我试图通过重新上传具有更改后值的CSV文件来更新数据库中的一个或多个字段。

我尝试过:

views.py

if

我遍历了这些值,并将值'gebaeudebereich'设置为CSV文件中的gebaeudebereich值(我也将对其他字段执行此操作,但这是我尝试过的想法)。它没有节省任何东西,也没有给我一个错误,只是什么也没做。 try子句可以正常工作。

我的模型。py

else

通过文件上传来更新数据库并不难。希望您能对我有所帮助,因为我试图解决这个问题的时间太长了。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。

def file_upload(request):
    if request.method == "POST":
        form = UploadFileForm(request.POST, request.FILES)
         count = 0
        if form.is_valid():
             csv_file = request.FILES['file']
            with open(str(csv_file)) as file:
                reader = csv.reader(file)
                for row in reader:
                    count += 1

                    try:

                        _, p = Excel1.objects.update_or_create(id = count, defaults = 
                              {'gebaeudebereich' : row[0], 'gebaeudenummer' : row[1],
                              'ebene' : row[2], 'raum' : row[3], 'dose' : row[4],
                              'switch_ip' : row[5], 'switch_port' : row[6], 'datum' : row[7], 'akteur' : row[8]})


                    except IntegrityError:
                        return render(request, 'testapp/duplicate_error.html', {'row' 
: row})

                return redirect('testapp:index')
    form = UploadFileForm()
    return render(
    request, "testapp/file_upload.html", {"form": form}
    )