Django IntegerField返回字符串(!) - 如何强制转换为int?

时间:2012-02-22 12:51:37

标签: python django django-models django-orm

我在模型上声明了如下所示的IntegerField:

amount = models.IntegerField()

访问它时,有时会返回一个字符串。造成这种情况的最直接原因是它已经为其分配了一个字符串。到目前为止,如此愚蠢。它甚至在保存后也会返回一个字符串。

这让我感到有些惊讶:如果IntegerField在赋值时将其值强制转换为整数(或者最迟在保存时),那将是很好的,因此用户可以依赖它是一个整数。

(我的应用程序使用sqlite。)

有没有办法让IntegerField只返回整数?或者我是否必须创建自定义字段才能执行此操作?

1 个答案:

答案 0 :(得分:9)

正如我的评论中提到的,发生这种情况的原因是Django在保存时对字段执行相关强制,但不反映原始模型上的值更改,因为如果不再次查询数据库就无法完成。

对于这类问题,最快的解决方法(也是最简单的)是查找字符串的来源并将其转换为int - 对我而言,这表明在验证中早先存在一些问题应该是把它拿起来。