用Django数据库中的新表替换旧表?

时间:2018-11-09 13:41:47

标签: django database

嗨,我正在研究Django项目,并使用以下代码添加了将csv文件导入Django数据库的功能

class UploadFileForm(forms.Form):
    file = forms.FileField()


    def import_csv(request):
        if request.method == "POST":
            with open('C:/Users/admin/Desktop/Projekt/test2.csv') as file:
                reader = csv.reader(file)
                for column in reader:
                    p = CSV(gebäude=column[0], etage=column[1], raum=column[2], dose=column[3])
                    p.save()
                return redirect('upload:index')
        form = UploadFileForm()
        return render(
        request, "upload/csv_upload.html", {"form": form}
    )

但是,如果我对csv文件进行更改并将其添加到数据库中,它只会添加所有内容,并且我在表中基本上拥有两次数据。我想知道是否有任何选项可以将表中的旧数据替换为已更改的数据,而不是仅将其添加到表中。我使用标准的sqlite3数据库。

这是csv文件

25.41, 1, 21, 10
25.42, 2, 22, 14
25.43, 1, 23, 13
25.44, 3, 24, 12
25.45, 2, 25, 11
25.46, 0, 15, 23

这是我的模特。py

class CSV(models.Model):
    gebäude = models.CharField(max_length=100)
    etage = models.CharField(max_length=100)
    raum = models.CharField(max_length=100)
    dose = models.CharField(max_length=100)

我的HTML表单

<h2>Upload CSV</h2>

<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Upload</button>

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

您只需执行CSV.objects.all().delete()即可清空现有表。