Django:验证CSV

时间:2015-01-08 21:57:56

标签: python django csv

我有这个模型,

class user2(models.Model):
    user = models.ForeignKey(User)
    number = models.IntegerField(null=True)

和包含如下信息的csv文件:

number,0001,0002,0003, ...

所以,我需要检查我从csv中获取的数字是否存在,如果没有,我用django用户模型创建用户,然后创建user2用户,现在我试试这个,检查数字是否存在存在于db

def import_csv(path):
    path = "/home/ad/ds/Web.csv"
    with open(path) as f:
        reader = csv.reader(f)
        for row in reader:
           try:
               if not user2.objects.filter(number=int(row[0])).exists():
                   print "no"
           except:
               print "asd "

但是当我这样做时,我得到了这个错误:

invalid literal for int() with base 10: 'number'

我怎么能这样做?谢谢

1 个答案:

答案 0 :(得分:0)

出现此问题的原因是您尝试将csv文件中第一个csv值(即csv文件中的字符串)强制转换为int

if not user2.objects.filter(number=int(row[0])).exists():

您可以将代码更改为此值,以跳过第一个csv值为字符串,并从第二个值0001

开始
try:
    if not user2.objects.filter(number=int(row[1])).exists():
        #do stuff
except ValueError:
    # csv value was not an int