【问题标题】:Django preventing duplicate records while importing csvDjango在导入csv时防止重复记录
【发布时间】:2018-04-05 02:40:44
【问题描述】:

我正在将 csv 文件上传到 django 模型,使用以下代码可以正常工作

def upload_csv(request):
    if request.method == 'POST' and request.FILES['csv_file']:
        myfile = request.FILES['csv_file']
        fs = FileSystemStorage()
        filename = fs.save(myfile.name, myfile)
        data = csv.reader(fs.open(filename, mode='r'))
        for row in data:
            if row[0] != 'FP_Item':
                post = FP()
                post.FP_Item = row[0]
                post.save()
        messages.success(request, "FP uploaded to Database")
        queryset_list = FP.objects.all()
        context = {'object_list': queryset_list}
        return render(request, 'index.html', context)

我需要的是防止重复进入数据库。当我看到重复字段时,我需要继续而不用 post.save() 保存,所以我按照下面的方法修改了我的代码,但即使它是重复的,仍然保存。代码也没有错误。我在做什么错?

for row in data:
    queryset_list = FP.objects.all()
    if row[0] != 'FP_Item':
        if row[0] == queryset_list.filter(FP_Item__contains=row[0]):
            continue
    post = FP()
    post.FP_Item = row[0]
    post.save()

【问题讨论】:

    标签: django csv duplicates


    【解决方案1】:

    row[0] 永远不会等于queryset_list.filter,这仍然是一个查询集。你可以这样做:

    if FP.objects.filter(FP_Item__contains=row[0]):
        continue
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-16
      • 2016-08-24
      • 2019-09-28
      • 2015-08-23
      • 2012-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多