django query

时间:2015-08-04 08:06:09

标签: python django

我正在尝试将excel文件导入我的数据库。该文件包含一个id列,稍后将其保存到django模型中的Foreignkey。

st_id = row[10]
st_data = Student.objects.get(id=st_id)

现在,当我使用.save()方法保存此数据时,它会保存数据,但会返回在分配之前引用的未绑定错误“st_data”。追溯是invalid literal for int() with base 10

实际发生了什么?它可以保存正确的数据,但会为int()抛出无效的文字。

编辑: 总体概念如下:

try:
    st_id = row[10]
    print type(st_id) #this line returns both type float and str
    st_data = Student.objects.get(id=st_id)
except Exception as e:
    print e #here it throws an exception `invalid literal for int()`

st_dict = {
   'student': st_data,
}

obj = Section(**st_dict)
obj.save() #the correct data is saved to the database.

1 个答案:

答案 0 :(得分:1)

可能你的行不包含int。

要解决此问题,请尝试:

st_data = Student.objects.get(id=int(st_id))