代码之家  ›  专栏  ›  技术社区  ›  İlkem Çetinkaya

django模型和csv文件zip功能缺失

  •  0
  • İlkem Çetinkaya  · 技术社区  · 8 年前

    在你的帮助下,我解决了很多问题,我想我们到了最后一个问题了; 如果csv文件中的行不在my django模型数据库中,那么django会将所有内容混合在一起;csv行和django数据库不再按正确的顺序运行,所以它们都是混合的。 为了防止这个问题,我在循环中添加了if queryset count函数来引发错误消息,或者尝试推送另一个默认值,但没有任何效果。您建议如何防止此同步问题?

                       for instance in RFP.objects.filter(FP_Item=query):
                            if RFP.objects.filter(FP_Item=query).count() >= 1:
                                instances.append(instance)
                            else:
                                messages.success(request, "ERROR")
    

    参考整个代码:

     with open(path, encoding='utf-8') as f:
                data = csv.reader(f, delimiter='|')
                for row in data:
                    line = row[0]
                    lines.append(line)
                    query = line
                    for instance in FP.objects.filter(FP_Item=query):
                        if FP.objects.filter(FP_Item=query).count() <= 1:
                            instances.append(instance)
                        else:
                            messages.success(request, "ERROR")
                pair = zip(lines, instances)
                context = {'pair': pair,
                           }
                return render(request, 'check_fp.html', context)
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   ahmet    8 年前

    不能使用过滤器queryset和for if else循环。
    您需要将get函数与try和except一起使用,以捕获空实例。

                    try:
                        instance = FP.objects.get(FP_Item=query)
                        instances.append(instance)
                    except FP.DoesNotExist:
                        instance = ["Check"]
                        instances.append(instance)
                pair = zip(lines, instances)